diff --git a/src/com/wentch/redkale/net/http/WebSocketEngine.java b/src/com/wentch/redkale/net/http/WebSocketEngine.java index b86de7009..5f97626d1 100644 --- a/src/com/wentch/redkale/net/http/WebSocketEngine.java +++ b/src/com/wentch/redkale/net/http/WebSocketEngine.java @@ -38,6 +38,7 @@ public final class WebSocketEngine { if (group == null) { group = new WebSocketGroup(socket.groupid); containers.put(socket.groupid, group); + group.recentWebSocket = socket; } group.add(socket); } diff --git a/src/com/wentch/redkale/net/http/WebSocketGroup.java b/src/com/wentch/redkale/net/http/WebSocketGroup.java index 88ab2f6ac..22d202ef2 100644 --- a/src/com/wentch/redkale/net/http/WebSocketGroup.java +++ b/src/com/wentch/redkale/net/http/WebSocketGroup.java @@ -18,6 +18,8 @@ public final class WebSocketGroup { private final Serializable groupid; + WebSocket recentWebSocket; + private final List list = new CopyOnWriteArrayList<>(); private final Map attributes = new HashMap<>(); @@ -47,6 +49,15 @@ public final class WebSocketGroup { return list.isEmpty(); } + /** + * 最近发送消息的WebSocket + *

+ * @return + */ + public final WebSocket getRecentWebSocket() { + return recentWebSocket; + } + @SuppressWarnings("unchecked") public final T getAttribute(String name) { return (T) attributes.get(name); diff --git a/src/com/wentch/redkale/net/http/WebSocketRunner.java b/src/com/wentch/redkale/net/http/WebSocketRunner.java index 0745370c6..f10336175 100644 --- a/src/com/wentch/redkale/net/http/WebSocketRunner.java +++ b/src/com/wentch/redkale/net/http/WebSocketRunner.java @@ -80,6 +80,7 @@ public class WebSocketRunner implements Runnable { readBuffer.clear(); channel.read(readBuffer, null, this); } + webSocket.group.recentWebSocket = webSocket; if (packet.type == PacketType.TEXT) { webSocket.onMessage(packet.getPayload()); } else if (packet.type == PacketType.BINARY) {