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{
IM("/im/user") ,
AGENT("/im/agent"),
ENTIM("/im/ent") ,
AIIM("/im/ai") ;
SYSTEM("/bm/system") ,
GAME("/bm/game");
private String namespace ;

View File

@@ -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<SocketIOClient> userClients = imClients.getClients(id) ;
List<SocketIOClient> 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<SocketIOClient> agents = agentClients.getClients(id) ;
List<SocketIOClient> 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<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.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){
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) ;
}
}
}

View File

@@ -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<String, SocketIOClient> agentClientsMap = ArrayListMultimap.create();
private ArrayListMultimap<String, SocketIOClient> systemClientsMap = ArrayListMultimap.create();
public List<SocketIOClient> 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) ;
}
}
}

View File

@@ -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 {

View File

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

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