瀏覽代碼

代码规范

xie.bx 3 年之前
父節點
當前提交
7b37c4dca5

+ 1 - 1
im-server/src/main/java/com/bx/imserver/netty/IMServerMap.java → im-server/src/main/java/com/bx/imserver/netty/IMServerGroup.java

@@ -12,7 +12,7 @@ import java.util.List;
 
 @Slf4j
 @Component
-public class IMServerMap implements CommandLineRunner  {
+public class IMServerGroup implements CommandLineRunner  {
 
     public static volatile long serverId = 0;
 

+ 2 - 2
im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java

@@ -6,7 +6,7 @@ import com.bx.imcommon.contant.RedisKey;
 import com.bx.imcommon.enums.IMCmdType;
 import com.bx.imcommon.model.IMSendInfo;
 import com.bx.imcommon.model.LoginInfo;
-import com.bx.imserver.netty.IMServerMap;
+import com.bx.imserver.netty.IMServerGroup;
 import com.bx.imserver.netty.UserChannelCtxMap;
 import com.bx.imserver.netty.ws.WebSocketServer;
 import io.netty.channel.ChannelHandlerContext;
@@ -50,7 +50,7 @@ public class LoginProcessor extends   MessageProcessor<LoginInfo> {
         ctx.channel().attr(attr).set(0L);
         // 在redis上记录每个user的channelId,15秒没有心跳,则自动过期
         String key = RedisKey.IM_USER_SERVER_ID+loginInfo.getUserId();
-        redisTemplate.opsForValue().set(key, IMServerMap.serverId, Constant.ONLINE_TIMEOUT_SECOND, TimeUnit.SECONDS);
+        redisTemplate.opsForValue().set(key, IMServerGroup.serverId, Constant.ONLINE_TIMEOUT_SECOND, TimeUnit.SECONDS);
         // 响应ws
         IMSendInfo sendInfo = new IMSendInfo();
         sendInfo.setCmd(IMCmdType.LOGIN.code());

+ 13 - 6
im-server/src/main/java/com/bx/imserver/netty/tcp/TcpSocketServer.java

@@ -34,9 +34,9 @@ public class TcpSocketServer implements IMServer {
     @Value("${tcpsocket.port}")
     private int port;
 
-    private  ServerBootstrap bootstrap = new ServerBootstrap();
-    private  EventLoopGroup bossGroup = new NioEventLoopGroup();
-    private  EventLoopGroup workGroup = new NioEventLoopGroup();
+    private  ServerBootstrap bootstrap;
+    private  EventLoopGroup bossGroup;
+    private  EventLoopGroup workGroup;
 
     @Override
     public boolean isReady() {
@@ -45,6 +45,9 @@ public class TcpSocketServer implements IMServer {
 
     @Override
     public void start() {
+        bootstrap = new ServerBootstrap();
+        bossGroup = new NioEventLoopGroup();
+        workGroup = new NioEventLoopGroup();
         // 设置为主从线程模型
         bootstrap.group(bossGroup, workGroup)
                 // 设置服务端NIO通信类型
@@ -84,10 +87,14 @@ public class TcpSocketServer implements IMServer {
 
     @Override
     public void stop(){
-        log.info("tcp server 停止");
-        bossGroup.shutdownGracefully();
-        workGroup.shutdownGracefully();
+        if(bossGroup != null && !bossGroup.isShuttingDown() && !bossGroup.isShutdown() ) {
+            bossGroup.shutdownGracefully();
+        }
+        if(workGroup != null && !workGroup.isShuttingDown() && !workGroup.isShutdown() ) {
+            workGroup.shutdownGracefully();
+        }
         this.ready = false;
+        log.info("tcp server 停止");
     }
 
 

+ 13 - 6
im-server/src/main/java/com/bx/imserver/netty/ws/WebSocketServer.java

@@ -37,9 +37,9 @@ public class WebSocketServer  implements IMServer {
 
     private volatile boolean ready = false;
 
-    private  ServerBootstrap bootstrap = new ServerBootstrap();
-    private  EventLoopGroup bossGroup = new NioEventLoopGroup();
-    private  EventLoopGroup workGroup = new NioEventLoopGroup();
+    private  ServerBootstrap bootstrap;
+    private  EventLoopGroup bossGroup;
+    private  EventLoopGroup workGroup;
 
 
     @Override
@@ -49,6 +49,9 @@ public class WebSocketServer  implements IMServer {
 
     @Override
     public void start() {
+        bootstrap = new ServerBootstrap();
+        bossGroup = new NioEventLoopGroup();
+        workGroup = new NioEventLoopGroup();
         // 设置为主从线程模型
         bootstrap.group(bossGroup, workGroup)
                 // 设置服务端NIO通信类型
@@ -92,10 +95,14 @@ public class WebSocketServer  implements IMServer {
 
     @Override
     public void stop() {
-        log.info("websocket server 停止");
-        bossGroup.shutdownGracefully();
-        workGroup.shutdownGracefully();
+        if(bossGroup != null && !bossGroup.isShuttingDown() && !bossGroup.isShutdown() ) {
+            bossGroup.shutdownGracefully();
+        }
+        if(workGroup != null && !workGroup.isShuttingDown() && !workGroup.isShutdown() ) {
+            workGroup.shutdownGracefully();
+        }
         this.ready = false;
+        log.info("websocket server 停止");
     }
 
 

+ 2 - 2
im-server/src/main/java/com/bx/imserver/task/PullUnreadGroupMessageTask.java

@@ -4,7 +4,7 @@ import com.bx.imcommon.contant.RedisKey;
 import com.bx.imcommon.enums.IMCmdType;
 import com.bx.imcommon.model.GroupMessageInfo;
 import com.bx.imcommon.model.IMRecvInfo;
-import com.bx.imserver.netty.IMServerMap;
+import com.bx.imserver.netty.IMServerGroup;
 import com.bx.imserver.netty.processor.MessageProcessor;
 import com.bx.imserver.netty.processor.ProcessorFactory;
 import com.bx.imserver.netty.ws.WebSocketServer;
@@ -30,7 +30,7 @@ public class PullUnreadGroupMessageTask extends  AbstractPullMessageTask {
     @Override
     public void pullMessage() {
         // 从redis拉取未读消息
-        String key = RedisKey.IM_UNREAD_GROUP_QUEUE + IMServerMap.serverId;
+        String key = RedisKey.IM_UNREAD_GROUP_QUEUE + IMServerGroup.serverId;
         List messageInfos = redisTemplate.opsForList().range(key,0,-1);
         for(Object o: messageInfos){
             redisTemplate.opsForList().leftPop(key);

+ 2 - 2
im-server/src/main/java/com/bx/imserver/task/PullUnreadPrivateMessageTask.java

@@ -5,7 +5,7 @@ import com.bx.imcommon.contant.RedisKey;
 import com.bx.imcommon.enums.IMCmdType;
 import com.bx.imcommon.model.IMRecvInfo;
 import com.bx.imcommon.model.PrivateMessageInfo;
-import com.bx.imserver.netty.IMServerMap;
+import com.bx.imserver.netty.IMServerGroup;
 import com.bx.imserver.netty.processor.MessageProcessor;
 import com.bx.imserver.netty.processor.ProcessorFactory;
 import com.bx.imserver.netty.ws.WebSocketServer;
@@ -30,7 +30,7 @@ public class PullUnreadPrivateMessageTask extends  AbstractPullMessageTask {
     @Override
     public void pullMessage() {
         // 从redis拉取未读消息
-        String key = RedisKey.IM_UNREAD_PRIVATE_QUEUE + IMServerMap.serverId;
+        String key = RedisKey.IM_UNREAD_PRIVATE_QUEUE + IMServerGroup.serverId;
         List messageInfos = redisTemplate.opsForList().range(key,0,-1);
         for(Object o: messageInfos){
             redisTemplate.opsForList().leftPop(key);