diff --git a/src/org/redkale/net/http/WebSocketNode.java b/src/org/redkale/net/http/WebSocketNode.java index da61f891a..18bf54f39 100644 --- a/src/org/redkale/net/http/WebSocketNode.java +++ b/src/org/redkale/net/http/WebSocketNode.java @@ -54,9 +54,9 @@ public abstract class WebSocketNode { }); }); } - + protected abstract List getOnlineRemoteAddresses(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid); - + protected abstract int sendMessage(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid, boolean recent, Serializable message, boolean last); protected abstract void connect(Serializable groupid, InetSocketAddress addr); @@ -64,6 +64,10 @@ public abstract class WebSocketNode { protected abstract void disconnect(Serializable groupid, InetSocketAddress addr); //-------------------------------------------------------------------------------- + protected List remoteOnlineRemoteAddresses(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid) { + return remoteNode.getOnlineRemoteAddresses(targetAddress, groupid); + } + /** * 获取在线用户的节点地址列表 * @@ -73,25 +77,25 @@ public abstract class WebSocketNode { public Collection getOnlineNodes(final Serializable groupid) { return source.getCollection(groupid); } - + /** * 获取在线用户的详细连接信息 - * + * * @param groupid - * @return + * @return */ public Map> getOnlineRemoteAddress(final Serializable groupid) { - Collection nodes = getOnlineNodes(groupid); - if(nodes == null) return null; - final Map> map = new HashMap(); - for(InetSocketAddress nodeAddress : nodes) { - List list = getOnlineRemoteAddresses(nodeAddress, groupid); - if(list == null) list = new ArrayList(); - map.put(nodeAddress, list); - } - return map; + Collection nodes = getOnlineNodes(groupid); + if (nodes == null) return null; + final Map> map = new HashMap(); + for (InetSocketAddress nodeAddress : nodes) { + List list = getOnlineRemoteAddresses(nodeAddress, groupid); + if (list == null) list = new ArrayList(); + map.put(nodeAddress, list); + } + return map; } - + public final void connect(Serializable groupid, String engineid) { if (finest) logger.finest(localSncpAddress + " receive websocket connect event (" + groupid + " on " + engineid + ")."); Set engineids = localNodes.get(groupid); diff --git a/src/org/redkale/service/WebSocketNodeService.java b/src/org/redkale/service/WebSocketNodeService.java index 5f582c16b..794072b1b 100644 --- a/src/org/redkale/service/WebSocketNodeService.java +++ b/src/org/redkale/service/WebSocketNodeService.java @@ -32,7 +32,7 @@ public class WebSocketNodeService extends WebSocketNode implements Service { @Override public List getOnlineRemoteAddresses(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid) { - if (localSncpAddress == null || !localSncpAddress.equals(targetAddress)) return ((WebSocketNodeService) remoteNode).getOnlineRemoteAddresses(targetAddress, groupid); + if (localSncpAddress == null || !localSncpAddress.equals(targetAddress)) return remoteOnlineRemoteAddresses(targetAddress, groupid); final Set engineids = localNodes.get(groupid); if (engineids == null || engineids.isEmpty()) return null; final List rs = new ArrayList<>();