no commit message
This commit is contained in:
@@ -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 ;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 ;
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user