Skip to content

Commit 08baf15

Browse files
committed
Example: Fixed an exception log on closed connections.
If the tab was already close message sending failed on null connections.
1 parent 1531777 commit 08baf15

1 file changed

Lines changed: 14 additions & 8 deletions

File tree

wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/web/servlet/websocket/WebSocketMessageSenderDefault.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package com.giffing.wicket.spring.boot.starter.web.servlet.websocket;
22

3+
import java.util.Collection;
4+
import java.util.Objects;
5+
36
import org.apache.wicket.Application;
47
import org.apache.wicket.protocol.ws.WebSocketSettings;
58
import org.apache.wicket.protocol.ws.api.IWebSocketConnection;
@@ -25,12 +28,18 @@ public void sendToAll(IWebSocketPushMessage event) {
2528
var webSocketSettings = WebSocketSettings.Holder.get(application);
2629
var connectionRegistry = webSocketSettings.getConnectionRegistry();
2730
var connections = connectionRegistry.getConnections(application);
28-
log.trace("sending event to {} connections", connections.size());
29-
for (IWebSocketConnection connection : connections) {
30-
connection.sendMessage(event);
31-
}
31+
sendMessage(event, connections);
3232
}
3333

34+
private void sendMessage(IWebSocketPushMessage event, Collection<IWebSocketConnection> connections) {
35+
log.trace("sending event to {} connections", connections.size());
36+
connections.stream()
37+
.filter(Objects::nonNull)
38+
.forEach(connection ->
39+
connection.sendMessage(event)
40+
);
41+
}
42+
3443
@Override
3544
public void sendTo(Object identifier, IWebSocketPushMessage event) {
3645
if (identifier == null) {
@@ -41,10 +50,7 @@ public void sendTo(Object identifier, IWebSocketPushMessage event) {
4150
var connectionRegistry = webSocketSettings.getConnectionRegistry();
4251
wicketSessionResolver.resolve(identifier).forEach(sessionId -> {
4352
var connections = connectionRegistry.getConnections(application, sessionId);
44-
log.trace("sending event to {} connections", connections.size());
45-
for (IWebSocketConnection connection : connections) {
46-
connection.sendMessage(event);
47-
}
53+
sendMessage(event, connections);
4854
});
4955
}
5056
}

0 commit comments

Comments
 (0)