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

@@ -54,9 +54,9 @@ public abstract class WebSocketNode {
}); });
}); });
} }
protected abstract List<String> getOnlineRemoteAddresses(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid); protected abstract List<String> getOnlineRemoteAddresses(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid);
protected abstract int sendMessage(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid, boolean recent, Serializable message, boolean last); protected abstract int sendMessage(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid, boolean recent, Serializable message, boolean last);
protected abstract void connect(Serializable groupid, InetSocketAddress addr); 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 abstract void disconnect(Serializable groupid, InetSocketAddress addr);
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
protected List<String> remoteOnlineRemoteAddresses(@DynTargetAddress InetSocketAddress targetAddress, Serializable groupid) {
return remoteNode.getOnlineRemoteAddresses(targetAddress, groupid);
}
/** /**
* 获取在线用户的节点地址列表 * 获取在线用户的节点地址列表
* *
@@ -73,25 +77,25 @@ public abstract class WebSocketNode {
public Collection<InetSocketAddress> getOnlineNodes(final Serializable groupid) { public Collection<InetSocketAddress> getOnlineNodes(final Serializable groupid) {
return source.getCollection(groupid); return source.getCollection(groupid);
} }
/** /**
* 获取在线用户的详细连接信息 * 获取在线用户的详细连接信息
* *
* @param groupid * @param groupid
* @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) {
if (finest) logger.finest(localSncpAddress + " receive websocket connect event (" + groupid + " on " + engineid + ")."); if (finest) logger.finest(localSncpAddress + " receive websocket connect event (" + groupid + " on " + engineid + ").");
Set<String> engineids = localNodes.get(groupid); Set<String> engineids = localNodes.get(groupid);

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<>();