From cd2cfd37366002f790a2ed1435962d4eff7d5cec Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Tue, 01 Jun 2021 09:39:30 +0800
Subject: [PATCH] 版本合并
---
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/webscoket/WebSocketHandler.java | 64 +++++++++++++++++++++++---------
1 files changed, 46 insertions(+), 18 deletions(-)
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/webscoket/WebSocketHandler.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/webscoket/WebSocketHandler.java
index 19d15be..9b5b77c 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/webscoket/WebSocketHandler.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/webscoket/WebSocketHandler.java
@@ -14,9 +14,11 @@
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
import io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker;
import io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory;
+import io.netty.util.AttributeKey;
import io.netty.util.CharsetUtil;
import java.util.Date;
+import org.springblade.jfpt.nettyServer.NettyConfig;
import org.springblade.jfpt.suser.service.ISuserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -64,11 +66,16 @@
System.out.println("客户端断开连接:" + ctx.channel());
//用户离线状态
String name = ChannelSupervise.findName(ctx.channel().id().asShortText());
- String num="0";
- //工作状态(0闲置,1工作中)
- String workSt = "0";
- webSocketHandler.suserService.updateUser(num,name,workSt);
- ChannelSupervise.removeChannel(ctx.channel());
+ if ( name != null &&!name.equals("ping") ){
+ String num="0";
+ //工作状态(0闲置,1工作中)
+ String workSt = "0";
+ webSocketHandler.suserService.updateUser(num,name,workSt);
+ //ChannelSupervise.removeChannel(ctx.channel());
+
+ NettyConfig.getChannelGroup().remove(ctx.channel());
+ removeUserId(ctx);
+ }
}
@Override
@@ -96,20 +103,31 @@
}
// 返回应答消息
String request = ((TextWebSocketFrame) frame).text();
- //把用户信息添加到通道里
- ChannelSupervise.addChannel(ctx.channel(),request);
- //用户在线状态
- this.on=request;
- //在线状态(0掉线,1在线)
- String num="1";
- //工作状态(0闲置,1工作中)
- String workSt = "0";
- webSocketHandler.suserService.updateUser(num,request,workSt);
- TextWebSocketFrame tws = new TextWebSocketFrame(new Date().toString()
- + ctx.channel().id() + ":" + ctx.channel());
- // 返回【谁发的发给谁】
- ctx.channel().writeAndFlush(tws);
+ if (!request.equals("ping")){
+
+ NettyConfig.getUserChannelMap().put(request,ctx.channel());
+
+ //将用户id作为自定义属性加入到channel 中,方便随时channel中获取用户id
+ AttributeKey<String> key = AttributeKey.valueOf("userId");
+ ctx.channel().attr(key).setIfAbsent(request);
+
+ //把用户信息添加到通道里
+ ChannelSupervise.addChannel(ctx.channel(),request);
+ //用户在线状态
+ this.on=request;
+ //在线状态(0掉线,1在线)
+ String num="1";
+ //工作状态(0闲置,1工作中)
+ String workSt = "0";
+ webSocketHandler.suserService.updateUser(num,request,workSt);
+ }
+
+// TextWebSocketFrame tws = new TextWebSocketFrame(new Date().toString()
+// + ctx.channel().id() + ":" + ctx.channel());
+// // 返回【谁发的发给谁】
+//
+// ctx.channel().writeAndFlush(tws);
// 群发
// ChannelSupervise.send2All(tws);
}
@@ -163,4 +181,14 @@
ctx.close();
}
+ /**
+ * 删除用户与channel 对应关系
+ * @param ctx
+ */
+ private void removeUserId(ChannelHandlerContext ctx){
+ AttributeKey<String> key = AttributeKey.valueOf("userId");
+ String userId = ctx.channel().attr(key).get();
+ NettyConfig.getUserChannelMap().remove(userId);
+ }
+
}
--
Gitblit v1.9.3