no commit message
This commit is contained in:
@@ -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 ;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 ;
|
||||||
}
|
}
|
||||||
@@ -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