| | |
| | | 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; |
| | |
| | | //工作状态(0闲置,1工作中) |
| | | String workSt = "0"; |
| | | webSocketHandler.suserService.updateUser(num,name,workSt); |
| | | ChannelSupervise.removeChannel(ctx.channel()); |
| | | //ChannelSupervise.removeChannel(ctx.channel()); |
| | | |
| | | NettyConfig.getChannelGroup().remove(ctx.channel()); |
| | | removeUserId(ctx); |
| | | } |
| | | } |
| | | |
| | |
| | | String request = ((TextWebSocketFrame) frame).text(); |
| | | |
| | | 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); |
| | | //用户在线状态 |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |