南昌市物联网技防平台-后台
tangzy
2021-03-23 33b9576f739ec64ff1480f84d25d1200b055e1ac
1.webscoket
4 files modified
43 ■■■■ changed files
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java 2 ●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/webscoket/ChannelSupervise.java 10 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/webscoket/WebSocketHandler.java 28 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/webscoket/index.html 3 ●●●●● patch | view | raw | blame | history
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;