Skip to content

Commit

Permalink
Remove closed sessions, maybe?
Browse files Browse the repository at this point in the history
  • Loading branch information
mcm001 committed Nov 2, 2023
1 parent 6666b22 commit 1456ca9
Showing 1 changed file with 19 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -347,25 +347,40 @@ public void onBinaryMessage(WsBinaryMessageContext context) {
}
}

private void sendMessage(Object message, WsContext user) throws JsonProcessingException {
private boolean sendMessage(Object message, WsContext user) throws JsonProcessingException {
ByteBuffer b = ByteBuffer.wrap(objectMapper.writeValueAsBytes(message));
user.send(b);
if (user.session.isOpen()) {
user.send(b);
return true;
} else {
return false;
}
}

public void broadcastMessage(Object message, WsContext userToSkip)
throws JsonProcessingException {
var badUsers = new ArrayList<WsContext>();
if (userToSkip == null) {
for (WsContext user : users) {
sendMessage(message, user);
if (!sendMessage(message, user)) {
badUsers.add(user);
}
}
} else {
var skipUserPort = ((InetSocketAddress) userToSkip.session.getRemoteAddress()).getPort();
for (WsContext user : users) {
var userPort = ((InetSocketAddress) user.session.getRemoteAddress()).getPort();
if (userPort != skipUserPort) {
sendMessage(message, user);
if (!sendMessage(message, user)) {
badUsers.add(user);
}
}
}
}

for (var user : badUsers) {
user.closeSession();
}
users.removeAll(badUsers);
}
}

0 comments on commit 1456ca9

Please sign in to comment.