Я хотел бы создать простую систему чата с WebSocket.
Если 1 пользователь закрывает соединение, все работает нормально, и я не получаю никаких ошибок, но я получаю ошибку, если я подключен ксервер в 1 браузере с несколькими вкладками.Поэтому, если я закрываю браузер, я получаю следующую ошибку:
Причина: java.lang.IllegalStateException: сообщение не будет отправлено, поскольку сеанс WebSocket был закрыт
@OnClose
public void handleClose(Session userSession) throws IOException {
synchronized (users) {
users.remove(userSession);
// Post the message
for (Session user : users) {
if (user.isOpen()) {
postMessage();
Data data = new Data("quit", currentTime, (String) userSession.getUserProperties().get("username"), "null", "null", new ArrayList<>(), new ArrayList<>(), "null");
if (!Objects.requireNonNull(Database.getData("SELECT * FROM users WHERE username = '" + userSession.getUserProperties().get("username") + "'", this.user)).isEmpty()) {
data = new Data("quit", this.currentTime, (String) userSession.getUserProperties().get("username"), "null", "true", new ArrayList<>(), new ArrayList<>(), "null");
}
try {
user.getBasicRemote().sendText(gson.toJson(data));
}
catch (IOException e) {
System.out.println(e.getLocalizedMessage());
}
}
}
}
}
Что я делаю не так?