This commit is contained in:
wentch
2015-12-29 11:01:52 +08:00
parent 3fbb5d37b3
commit 82ce0b6e78
2 changed files with 20 additions and 16 deletions

View File

@@ -64,6 +64,10 @@ public abstract class WebSocketNode {
protected abstract void disconnect(Serializable groupid, InetSocketAddress addr); protected abstract void disconnect(Serializable groupid, InetSocketAddress addr);
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
protected List<String> remoteOnlineRemoteAddresses(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid) {
return remoteNode.getOnlineRemoteAddresses(targetAddress, groupid);
}
/** /**
* 获取在线用户的节点地址列表 * 获取在线用户的节点地址列表
* *
@@ -81,15 +85,15 @@ public abstract class WebSocketNode {
* @return * @return
*/ */
public Map<InetSocketAddress, List<String>> getOnlineRemoteAddress(final Serializable groupid) { public Map<InetSocketAddress, List<String>> getOnlineRemoteAddress(final Serializable groupid) {
Collection<InetSocketAddress> nodes = getOnlineNodes(groupid); Collection<InetSocketAddress> nodes = getOnlineNodes(groupid);
if(nodes == null) return null; if (nodes == null) return null;
final Map<InetSocketAddress, List<String>> map = new HashMap(); final Map<InetSocketAddress, List<String>> map = new HashMap();
for(InetSocketAddress nodeAddress : nodes) { for (InetSocketAddress nodeAddress : nodes) {
List<String> list = getOnlineRemoteAddresses(nodeAddress, groupid); List<String> list = getOnlineRemoteAddresses(nodeAddress, groupid);
if(list == null) list = new ArrayList(); if (list == null) list = new ArrayList();
map.put(nodeAddress, list); map.put(nodeAddress, list);
} }
return map; return map;
} }
public final void connect(Serializable groupid, String engineid) { public final void connect(Serializable groupid, String engineid) {

View File

@@ -32,7 +32,7 @@ public class WebSocketNodeService extends WebSocketNode implements Service {
@Override @Override
public List<String> getOnlineRemoteAddresses(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid) { public List<String> 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<String> engineids = localNodes.get(groupid); final Set<String> engineids = localNodes.get(groupid);
if (engineids == null || engineids.isEmpty()) return null; if (engineids == null || engineids.isEmpty()) return null;
final List<String> rs = new ArrayList<>(); final List<String> rs = new ArrayList<>();