From 75d5dbb0d986e5139e1aa096b44cf51599c03473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=9D=E5=AF=86=E6=B8=B8=E6=88=8F?= Date: Fri, 4 Aug 2017 17:18:59 +0800 Subject: [PATCH] no commit message --- .../java/com/beimi/core/BMDataContext.java | 6 +-- .../com/beimi/util/client/NettyClients.java | 44 +++++------------- ...ettyIMClient.java => NettyGameClient.java} | 10 ++--- ...gentClient.java => NettySystemClient.java} | 10 ++--- .../com/beimi/util/server/ServerRunner.java | 23 +++++++--- ...ventHandler.java => GameEventHandler.java} | 4 +- .../server/handler/SystemEventHandler.java | 45 +++++++++++++++++++ 7 files changed, 87 insertions(+), 55 deletions(-) rename src/main/java/com/beimi/util/client/{NettyIMClient.java => NettyGameClient.java} (67%) rename src/main/java/com/beimi/util/client/{NettyAgentClient.java => NettySystemClient.java} (65%) rename src/main/java/com/beimi/util/server/handler/{IMEventHandler.java => GameEventHandler.java} (89%) create mode 100644 src/main/java/com/beimi/util/server/handler/SystemEventHandler.java diff --git a/src/main/java/com/beimi/core/BMDataContext.java b/src/main/java/com/beimi/core/BMDataContext.java index 9bd69f5..c29bca4 100644 --- a/src/main/java/com/beimi/core/BMDataContext.java +++ b/src/main/java/com/beimi/core/BMDataContext.java @@ -42,10 +42,8 @@ public class BMDataContext { public enum NameSpaceEnum{ - IM("/im/user") , - AGENT("/im/agent"), - ENTIM("/im/ent") , - AIIM("/im/ai") ; + SYSTEM("/bm/system") , + GAME("/bm/game"); private String namespace ; diff --git a/src/main/java/com/beimi/util/client/NettyClients.java b/src/main/java/com/beimi/util/client/NettyClients.java index 8b11e1e..0c3a83e 100644 --- a/src/main/java/com/beimi/util/client/NettyClients.java +++ b/src/main/java/com/beimi/util/client/NettyClients.java @@ -9,62 +9,42 @@ public class NettyClients { private static NettyClients clients = new NettyClients(); - private NettyIMClient imClients = new NettyIMClient(); - private NettyAgentClient agentClients = new NettyAgentClient(); - private NettyIMClient entIMClients = new NettyIMClient(); + private NettyGameClient gameClients = new NettyGameClient(); + private NettySystemClient systemClients = new NettySystemClient(); public static NettyClients getInstance(){ return clients ; } - public void setImClients(NettyIMClient imClients) { - this.imClients = imClients; + public void setImClients(NettyGameClient imClients) { + this.gameClients = imClients; } public void putIMEventClient(String id , SocketIOClient userClient){ - imClients.putClient(id, userClient); + gameClients.putClient(id, userClient); } public void removeIMEventClient(String id , String sessionid){ - imClients.removeClient(id, sessionid); + gameClients.removeClient(id, sessionid); } public void sendIMEventMessage(String id , String event , Object data){ - List userClients = imClients.getClients(id) ; + List userClients = gameClients.getClients(id) ; for(SocketIOClient userClient : userClients){ userClient.sendEvent(event, data); } } - public void setAgentClients(NettyAgentClient agentClients) { - this.agentClients = agentClients; + public void setAgentClients(NettySystemClient agentClients) { + this.systemClients = agentClients; } public void putAgentEventClient(String id , SocketIOClient agentClient){ - agentClients.putClient(id, agentClient); + systemClients.putClient(id, agentClient); } public void removeAgentEventClient(String id , String sessionid){ - agentClients.removeClient(id, sessionid); + systemClients.removeClient(id, sessionid); } public void sendAgentEventMessage(String id , String event , Object data){ - List agents = agentClients.getClients(id) ; + List agents = systemClients.getClients(id) ; for(SocketIOClient agentClient : agents){ agentClient.sendEvent(event, data); } } - - public void setEntImClients(NettyIMClient entIMClients) { - this.entIMClients = entIMClients; - } - public void putEntIMEventClient(String id , SocketIOClient userClient){ - entIMClients.putClient(id, userClient); - } - public void removeEntIMEventClient(String id , String sessionid){ - entIMClients.removeClient(id, sessionid); - } - public void sendEntIMEventMessage(String id , String event , Object data){ - List entims = entIMClients.getClients(id) ; - for(SocketIOClient userClient : entims){ - userClient.sendEvent(event, data); - } - } - public int getEntIMClientsNum(String user){ - return entIMClients.getClients(user)!=null ? entIMClients.getClients(user).size() : 0; - } } diff --git a/src/main/java/com/beimi/util/client/NettyIMClient.java b/src/main/java/com/beimi/util/client/NettyGameClient.java similarity index 67% rename from src/main/java/com/beimi/util/client/NettyIMClient.java rename to src/main/java/com/beimi/util/client/NettyGameClient.java index 376a658..a942e6e 100644 --- a/src/main/java/com/beimi/util/client/NettyIMClient.java +++ b/src/main/java/com/beimi/util/client/NettyGameClient.java @@ -5,16 +5,16 @@ import java.util.List; import com.corundumstudio.socketio.SocketIOClient; import com.google.common.collect.ArrayListMultimap; -public class NettyIMClient implements NettyClient{ +public class NettyGameClient implements NettyClient{ - private ArrayListMultimap imClientsMap = ArrayListMultimap.create(); + private ArrayListMultimap gameClientsMap = ArrayListMultimap.create(); public List getClients(String key){ - return imClientsMap.get(key) ; + return gameClientsMap.get(key) ; } public void putClient(String key , SocketIOClient client){ - imClientsMap.put(key, client) ; + gameClientsMap.put(key, client) ; } public void removeClient(String key , String id){ @@ -26,7 +26,7 @@ public class NettyIMClient implements NettyClient{ } } if(keyClients.size() == 0){ - imClientsMap.removeAll(key) ; + gameClientsMap.removeAll(key) ; } } } diff --git a/src/main/java/com/beimi/util/client/NettyAgentClient.java b/src/main/java/com/beimi/util/client/NettySystemClient.java similarity index 65% rename from src/main/java/com/beimi/util/client/NettyAgentClient.java rename to src/main/java/com/beimi/util/client/NettySystemClient.java index 902eb7e..4334076 100644 --- a/src/main/java/com/beimi/util/client/NettyAgentClient.java +++ b/src/main/java/com/beimi/util/client/NettySystemClient.java @@ -5,16 +5,16 @@ import java.util.List; import com.corundumstudio.socketio.SocketIOClient; import com.google.common.collect.ArrayListMultimap; -public class NettyAgentClient implements NettyClient{ +public class NettySystemClient implements NettyClient{ - private ArrayListMultimap agentClientsMap = ArrayListMultimap.create(); + private ArrayListMultimap systemClientsMap = ArrayListMultimap.create(); public List getClients(String key){ - return agentClientsMap.get(key) ; + return systemClientsMap.get(key) ; } public void putClient(String key , SocketIOClient client){ - agentClientsMap.put(key, client) ; + systemClientsMap.put(key, client) ; } public void removeClient(String key , String id){ @@ -26,7 +26,7 @@ public class NettyAgentClient implements NettyClient{ } } if(keyClients.size() == 0){ - agentClientsMap.removeAll(key) ; + systemClientsMap.removeAll(key) ; } } } diff --git a/src/main/java/com/beimi/util/server/ServerRunner.java b/src/main/java/com/beimi/util/server/ServerRunner.java index 1e770f8..5bd599e 100644 --- a/src/main/java/com/beimi/util/server/ServerRunner.java +++ b/src/main/java/com/beimi/util/server/ServerRunner.java @@ -6,25 +6,34 @@ import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import com.beimi.core.BMDataContext; -import com.beimi.util.server.handler.IMEventHandler; +import com.beimi.util.server.handler.GameEventHandler; +import com.beimi.util.server.handler.SystemEventHandler; import com.corundumstudio.socketio.SocketIONamespace; import com.corundumstudio.socketio.SocketIOServer; @Component public class ServerRunner implements CommandLineRunner { private final SocketIOServer server; - private final SocketIONamespace imSocketNameSpace ; + private final SocketIONamespace gameSocketNameSpace ; + private final SocketIONamespace systemSocketNameSpace ; @Autowired public ServerRunner(SocketIOServer server) { this.server = server; - imSocketNameSpace = server.addNamespace(BMDataContext.NameSpaceEnum.IM.getNamespace()) ; + gameSocketNameSpace = server.addNamespace(BMDataContext.NameSpaceEnum.GAME.getNamespace()) ; + systemSocketNameSpace = server.addNamespace(BMDataContext.NameSpaceEnum.SYSTEM.getNamespace()) ; } - @Bean(name="imNamespace") - public SocketIONamespace getIMSocketIONameSpace(SocketIOServer server ){ - imSocketNameSpace.addListeners(new IMEventHandler(server)); - return imSocketNameSpace ; + @Bean(name="gameNamespace") + public SocketIONamespace getGameSocketIONameSpace(SocketIOServer server ){ + gameSocketNameSpace.addListeners(new GameEventHandler(server)); + return gameSocketNameSpace ; + } + + @Bean(name="systemNamespace") + public SocketIONamespace getSystemSocketIONameSpace(SocketIOServer server ){ + systemSocketNameSpace.addListeners(new SystemEventHandler(server)); + return systemSocketNameSpace ; } public void run(String... args) throws Exception { diff --git a/src/main/java/com/beimi/util/server/handler/IMEventHandler.java b/src/main/java/com/beimi/util/server/handler/GameEventHandler.java similarity index 89% rename from src/main/java/com/beimi/util/server/handler/IMEventHandler.java rename to src/main/java/com/beimi/util/server/handler/GameEventHandler.java index fc4f36d..8c9cc18 100644 --- a/src/main/java/com/beimi/util/server/handler/IMEventHandler.java +++ b/src/main/java/com/beimi/util/server/handler/GameEventHandler.java @@ -9,12 +9,12 @@ import com.corundumstudio.socketio.SocketIOServer; import com.corundumstudio.socketio.annotation.OnConnect; import com.corundumstudio.socketio.annotation.OnDisconnect; -public class IMEventHandler +public class GameEventHandler { protected SocketIOServer server; @Autowired - public IMEventHandler(SocketIOServer server) + public GameEventHandler(SocketIOServer server) { this.server = server ; } diff --git a/src/main/java/com/beimi/util/server/handler/SystemEventHandler.java b/src/main/java/com/beimi/util/server/handler/SystemEventHandler.java new file mode 100644 index 0000000..01e8efb --- /dev/null +++ b/src/main/java/com/beimi/util/server/handler/SystemEventHandler.java @@ -0,0 +1,45 @@ +package com.beimi.util.server.handler; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; + +import com.beimi.util.client.NettyClients; +import com.corundumstudio.socketio.SocketIOClient; +import com.corundumstudio.socketio.SocketIOServer; +import com.corundumstudio.socketio.annotation.OnConnect; +import com.corundumstudio.socketio.annotation.OnDisconnect; + +public class SystemEventHandler +{ + protected SocketIOServer server; + + @Autowired + public SystemEventHandler(SocketIOServer server) + { + this.server = server ; + } + + @OnConnect + public void onConnect(SocketIOClient client) + { + try { + String user = client.getHandshakeData().getSingleUrlParam("userid") ; + + if(!StringUtils.isBlank(user)){ + + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + //添加@OnDisconnect事件,客户端断开连接时调用,刷新客户端信息 + @OnDisconnect + public void onDisconnect(SocketIOClient client) + { + String user = client.getHandshakeData().getSingleUrlParam("userid") ; + if(user!=null){ + NettyClients.getInstance().removeIMEventClient(user , client.getSessionId().toString()); + } + } +} \ No newline at end of file