Skip to content

Commit

Permalink
增加用户绑定和路由踢人
Browse files Browse the repository at this point in the history
  • Loading branch information
闫逍旭 committed Dec 29, 2015
1 parent a64ea70 commit af9d31a
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 18 deletions.
21 changes: 20 additions & 1 deletion mpush-api/src/main/java/com/shinemo/mpush/api/RouterManager.java
Expand Up @@ -5,9 +5,28 @@
*/
public interface RouterManager<R extends Router> {

/**
* 注册路由
*
* @param userId
* @param route
* @return
*/
R register(String userId, R route);

/**
* 删除路由
*
* @param userId
* @return
*/
boolean unRegister(String userId);

R getRouter(String userId);
/**
* 查询路由
*
* @param userId
* @return
*/
R lookup(String userId);
}
32 changes: 25 additions & 7 deletions mpush-api/src/main/java/com/shinemo/mpush/api/UserConnConfig.java
@@ -1,15 +1,24 @@
package com.shinemo.mpush.api;

import com.shinemo.mpush.tools.MPushUtil;

/**
* Created by ohun on 2015/12/23.
*/
public final class UserConnConfig {
private String host;
private String osName;
private String clientVer;
private String clientVersion;
private String deviceId;

public UserConnConfig(String host) {
this.host = host;

public String getDeviceId() {
return deviceId;
}

public UserConnConfig setDeviceId(String deviceId) {
this.deviceId = deviceId;
return this;
}

public String getOsName() {
Expand All @@ -20,12 +29,12 @@ public void setOsName(String osName) {
this.osName = osName;
}

public String getClientVer() {
return clientVer;
public String getClientVersion() {
return clientVersion;
}

public void setClientVer(String clientVer) {
this.clientVer = clientVer;
public void setClientVersion(String clientVersion) {
this.clientVersion = clientVersion;
}

public String getHost() {
Expand All @@ -35,4 +44,13 @@ public String getHost() {
public void setHost(String host) {
this.host = host;
}

public static UserConnConfig from(SessionContext context) {
UserConnConfig config = new UserConnConfig();
config.osName = context.osName;
config.clientVersion = context.clientVersion;
config.deviceId = context.deviceId;
config.host = MPushUtil.getLocalIp();
return config;
}
}
Expand Up @@ -17,7 +17,7 @@
*/
public class MessageDispatcher implements PacketReceiver {
public static final Logger LOGGER = LoggerFactory.getLogger(MessageDispatcher.class);
public final BindHandler bindHandler = new BindHandler();
public final BindUserHandler bindUserHandler = new BindUserHandler();
public final HandShakeHandler handShakeHandler = new HandShakeHandler();
public final FastConnectHandler fastConnectHandler = new FastConnectHandler();
public final HeartBeatHandler heartBeatHandler = new HeartBeatHandler();
Expand All @@ -34,7 +34,7 @@ public void onReceive(Packet packet, Connection connection) {
handShakeHandler.handle(new HandShakeMessage(packet, connection));
break;
case BIND:
bindHandler.handle(new BindUserMessage(packet, connection));
bindUserHandler.handle(new BindUserMessage(packet, connection));
break;
case FAST_CONNECT:
fastConnectHandler.handle(new FastConnectMessage(packet, connection));
Expand Down
Expand Up @@ -11,7 +11,7 @@
/**
* Created by ohun on 2015/12/23.
*/
public final class BindHandler implements MessageHandler<BindUserMessage> {
public final class BindUserHandler implements MessageHandler<BindUserMessage> {

@Override
public void handle(BindUserMessage message) {
Expand All @@ -24,7 +24,6 @@ public void handle(BindUserMessage message) {
boolean success = RouterCenter.INSTANCE.register(message.userId, message.getConnection());
if (success) {
OkMessage.from(message).setData("bind success").send();
//TODO kick user
} else {
ErrorMessage.from(message).setReason("bind failed").send();
}
Expand Down
Expand Up @@ -23,7 +23,7 @@ public boolean unRegister(String userId) {
}

@Override
public LocalRouter getRouter(String userId) {
public LocalRouter lookup(String userId) {
return routerMap.get(userId);
}
}
Expand Up @@ -18,7 +18,7 @@ public boolean unRegister(String userId) {
}

@Override
public RemoteRouter getRouter(String userId) {
public RemoteRouter lookup(String userId) {
return null;
}
}
Expand Up @@ -15,9 +15,21 @@ public class RouterCenter {
private final LocalRouterManager localRouterManager = new LocalRouterManager();
private final RemoteRouterManager remoteRouterManager = new RemoteRouterManager();

/**
* 注册用户和链接
*
* @param userId
* @param connection
* @return
*/
public boolean register(String userId, Connection connection) {
LocalRouter oldLocalRouter = localRouterManager.register(userId, new LocalRouter(connection));
RemoteRouter oldRemoteRouter = remoteRouterManager.register(userId, new RemoteRouter(new UserConnConfig("127.0.0.1")));
UserConnConfig connConfig = UserConnConfig.from(connection.getSessionContext());

LocalRouter localRouter = new LocalRouter(connection);
RemoteRouter remoteRouter = new RemoteRouter(connConfig);

LocalRouter oldLocalRouter = localRouterManager.register(userId, localRouter);
RemoteRouter oldRemoteRouter = remoteRouterManager.register(userId, remoteRouter);
if (oldLocalRouter != null) {
kickLocalUser(userId, oldLocalRouter);
}
Expand All @@ -35,9 +47,9 @@ public boolean unRegister(String userId) {
}

public Router<?> lookup(String userId) {
LocalRouter local = localRouterManager.getRouter(userId);
LocalRouter local = localRouterManager.lookup(userId);
if (local != null) return local;
RemoteRouter remote = remoteRouterManager.getRouter(userId);
RemoteRouter remote = remoteRouterManager.lookup(userId);
return remote;
}

Expand Down

0 comments on commit af9d31a

Please sign in to comment.