no commit message

This commit is contained in:
贝密游戏
2017-08-04 17:18:59 +08:00
parent 5d33481245
commit 75d5dbb0d9
7 changed files with 87 additions and 55 deletions

View File

@@ -42,10 +42,8 @@ public class BMDataContext {
public enum NameSpaceEnum{ public enum NameSpaceEnum{
IM("/im/user") , SYSTEM("/bm/system") ,
AGENT("/im/agent"), GAME("/bm/game");
ENTIM("/im/ent") ,
AIIM("/im/ai") ;
private String namespace ; private String namespace ;

View File

@@ -9,62 +9,42 @@ public class NettyClients {
private static NettyClients clients = new NettyClients(); private static NettyClients clients = new NettyClients();
private NettyIMClient imClients = new NettyIMClient(); private NettyGameClient gameClients = new NettyGameClient();
private NettyAgentClient agentClients = new NettyAgentClient(); private NettySystemClient systemClients = new NettySystemClient();
private NettyIMClient entIMClients = new NettyIMClient();
public static NettyClients getInstance(){ public static NettyClients getInstance(){
return clients ; return clients ;
} }
public void setImClients(NettyIMClient imClients) { public void setImClients(NettyGameClient imClients) {
this.imClients = imClients; this.gameClients = imClients;
} }
public void putIMEventClient(String id , SocketIOClient userClient){ public void putIMEventClient(String id , SocketIOClient userClient){
imClients.putClient(id, userClient); gameClients.putClient(id, userClient);
} }
public void removeIMEventClient(String id , String sessionid){ public void removeIMEventClient(String id , String sessionid){
imClients.removeClient(id, sessionid); gameClients.removeClient(id, sessionid);
} }
public void sendIMEventMessage(String id , String event , Object data){ public void sendIMEventMessage(String id , String event , Object data){
List<SocketIOClient> userClients = imClients.getClients(id) ; List<SocketIOClient> userClients = gameClients.getClients(id) ;
for(SocketIOClient userClient : userClients){ for(SocketIOClient userClient : userClients){
userClient.sendEvent(event, data); userClient.sendEvent(event, data);
} }
} }
public void setAgentClients(NettyAgentClient agentClients) { public void setAgentClients(NettySystemClient agentClients) {
this.agentClients = agentClients; this.systemClients = agentClients;
} }
public void putAgentEventClient(String id , SocketIOClient agentClient){ public void putAgentEventClient(String id , SocketIOClient agentClient){
agentClients.putClient(id, agentClient); systemClients.putClient(id, agentClient);
} }
public void removeAgentEventClient(String id , String sessionid){ public void removeAgentEventClient(String id , String sessionid){
agentClients.removeClient(id, sessionid); systemClients.removeClient(id, sessionid);
} }
public void sendAgentEventMessage(String id , String event , Object data){ public void sendAgentEventMessage(String id , String event , Object data){
List<SocketIOClient> agents = agentClients.getClients(id) ; List<SocketIOClient> agents = systemClients.getClients(id) ;
for(SocketIOClient agentClient : agents){ for(SocketIOClient agentClient : agents){
agentClient.sendEvent(event, data); 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<SocketIOClient> 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;
}
} }

View File

@@ -5,16 +5,16 @@ import java.util.List;
import com.corundumstudio.socketio.SocketIOClient; import com.corundumstudio.socketio.SocketIOClient;
import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ArrayListMultimap;
public class NettyIMClient implements NettyClient{ public class NettyGameClient implements NettyClient{
private ArrayListMultimap<String, SocketIOClient> imClientsMap = ArrayListMultimap.create(); private ArrayListMultimap<String, SocketIOClient> gameClientsMap = ArrayListMultimap.create();
public List<SocketIOClient> getClients(String key){ public List<SocketIOClient> getClients(String key){
return imClientsMap.get(key) ; return gameClientsMap.get(key) ;
} }
public void putClient(String key , SocketIOClient client){ public void putClient(String key , SocketIOClient client){
imClientsMap.put(key, client) ; gameClientsMap.put(key, client) ;
} }
public void removeClient(String key , String id){ public void removeClient(String key , String id){
@@ -26,7 +26,7 @@ public class NettyIMClient implements NettyClient{
} }
} }
if(keyClients.size() == 0){ if(keyClients.size() == 0){
imClientsMap.removeAll(key) ; gameClientsMap.removeAll(key) ;
} }
} }
} }

View File

@@ -5,16 +5,16 @@ import java.util.List;
import com.corundumstudio.socketio.SocketIOClient; import com.corundumstudio.socketio.SocketIOClient;
import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ArrayListMultimap;
public class NettyAgentClient implements NettyClient{ public class NettySystemClient implements NettyClient{
private ArrayListMultimap<String, SocketIOClient> agentClientsMap = ArrayListMultimap.create(); private ArrayListMultimap<String, SocketIOClient> systemClientsMap = ArrayListMultimap.create();
public List<SocketIOClient> getClients(String key){ public List<SocketIOClient> getClients(String key){
return agentClientsMap.get(key) ; return systemClientsMap.get(key) ;
} }
public void putClient(String key , SocketIOClient client){ public void putClient(String key , SocketIOClient client){
agentClientsMap.put(key, client) ; systemClientsMap.put(key, client) ;
} }
public void removeClient(String key , String id){ public void removeClient(String key , String id){
@@ -26,7 +26,7 @@ public class NettyAgentClient implements NettyClient{
} }
} }
if(keyClients.size() == 0){ if(keyClients.size() == 0){
agentClientsMap.removeAll(key) ; systemClientsMap.removeAll(key) ;
} }
} }
} }

View File

@@ -6,25 +6,34 @@ import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.beimi.core.BMDataContext; 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.SocketIONamespace;
import com.corundumstudio.socketio.SocketIOServer; import com.corundumstudio.socketio.SocketIOServer;
@Component @Component
public class ServerRunner implements CommandLineRunner { public class ServerRunner implements CommandLineRunner {
private final SocketIOServer server; private final SocketIOServer server;
private final SocketIONamespace imSocketNameSpace ; private final SocketIONamespace gameSocketNameSpace ;
private final SocketIONamespace systemSocketNameSpace ;
@Autowired @Autowired
public ServerRunner(SocketIOServer server) { public ServerRunner(SocketIOServer server) {
this.server = 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") @Bean(name="gameNamespace")
public SocketIONamespace getIMSocketIONameSpace(SocketIOServer server ){ public SocketIONamespace getGameSocketIONameSpace(SocketIOServer server ){
imSocketNameSpace.addListeners(new IMEventHandler(server)); gameSocketNameSpace.addListeners(new GameEventHandler(server));
return imSocketNameSpace ; return gameSocketNameSpace ;
}
@Bean(name="systemNamespace")
public SocketIONamespace getSystemSocketIONameSpace(SocketIOServer server ){
systemSocketNameSpace.addListeners(new SystemEventHandler(server));
return systemSocketNameSpace ;
} }
public void run(String... args) throws Exception { public void run(String... args) throws Exception {

View File

@@ -9,12 +9,12 @@ import com.corundumstudio.socketio.SocketIOServer;
import com.corundumstudio.socketio.annotation.OnConnect; import com.corundumstudio.socketio.annotation.OnConnect;
import com.corundumstudio.socketio.annotation.OnDisconnect; import com.corundumstudio.socketio.annotation.OnDisconnect;
public class IMEventHandler public class GameEventHandler
{ {
protected SocketIOServer server; protected SocketIOServer server;
@Autowired @Autowired
public IMEventHandler(SocketIOServer server) public GameEventHandler(SocketIOServer server)
{ {
this.server = server ; this.server = server ;
} }

View File

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