blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java
@@ -42,7 +42,7 @@ public void run(String... args) throws Exception { Server server=new Server(8088); TcpServer tcpServer = new TcpServer(8099); //WebSocketServer webSocketServer= new WebSocketServer(9034); WebSocketServer webSocketServer= new WebSocketServer(9034); //UdpServer udpServer=new UdpServer(8099); } } blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/webscoket/ChannelSupervise.java
@@ -6,22 +6,30 @@ import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; import io.netty.util.concurrent.GlobalEventExecutor; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; public class ChannelSupervise { private static ChannelGroup GlobalGroup=new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); private static ConcurrentMap<String, ChannelId> ChannelMap=new ConcurrentHashMap(); public static void addChannel(Channel channel){ private static Map<String, String> map = new HashMap<String, String>();; public static void addChannel(Channel channel,String name){ GlobalGroup.add(channel); ChannelMap.put(channel.id().asShortText(),channel.id()); map.put(channel.id().asShortText(),name); } public static void removeChannel(Channel channel){ GlobalGroup.remove(channel); ChannelMap.remove(channel.id().asShortText()); map.remove(channel.id().asShortText()); } public static Channel findChannel(String id){ return GlobalGroup.find(ChannelMap.get(id)); } public static String findName(String id){ return map.get(id); } public static void send2All(TextWebSocketFrame tws){ GlobalGroup.writeAndFlush(tws); } blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/webscoket/WebSocketHandler.java
@@ -62,6 +62,10 @@ public void channelInactive(ChannelHandlerContext ctx) throws Exception { //断开连接 System.out.println("客户端断开连接:" + ctx.channel()); //用户离线状态 String name = ChannelSupervise.findName(ctx.channel().id().asShortText()); String num="0"; webSocketHandler.suserService.updateUser(num,name); ChannelSupervise.removeChannel(ctx.channel()); } @@ -90,26 +94,12 @@ } // 返回应答消息 String request = ((TextWebSocketFrame) frame).text(); String substring1 = request.substring(0, 2); //把用户信息添加到通道里 ChannelSupervise.addChannel(ctx.channel(),request); //用户在线状态 if(substring1.equals("登录")){ String online="1"; String substring = request.substring(0, request.length()); System.out.println(substring); String[] split = substring.split(",");//以逗号分割 this.on=split[1]; webSocketHandler.suserService.updateUser(online,this.on); } //用户离线状态 else if (substring1.equals("退出")){ String online="0"; String substring = request.substring(0, request.length()); System.out.println(substring); String[] split = substring.split(",");//以逗号分割 this.on=split[1]; webSocketHandler.suserService.updateUser(online,this.on); webSocketHandler.channelInactive(ctx); } this.on=request; String num="1"; webSocketHandler.suserService.updateUser(num,request); TextWebSocketFrame tws = new TextWebSocketFrame(new Date().toString() + ctx.channel().id() + ":" + ctx.channel()); // 返回【谁发的发给谁】 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/webscoket/index.html
@@ -23,12 +23,15 @@ socket.onclose = function(event){ var ta = document.getElementById('responseContent'); ta.value = ""; ta.value = "WebSocket连接已经关闭\r\n"; }; }else{ alert("您的浏览器不支持WebSocket"); } function send(message){ if(!window.WebSocket){ return;