wuyouming666
2024-05-24 03f241781205b4aaafa6cee66e7402a41ef97fc1
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java
@@ -1,28 +1,35 @@
package com.mes.tools;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.stereotype.Component;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
@ServerEndpoint(value = "/api/talk/{username}")
@Component("webSocketServer")
@Component
public class WebSocketServer {
    // @Autowired
    // HomeMapper homeMapper;
    public static ConfigurableApplicationContext applicationContext;
    static ConfigurableApplicationContext applicationContext;
    // 解决无法注入mapper问题 //使用方法
    // homeMapper=WebSocketServer.applicationContext.getBean(HomeMapper.class);
@@ -38,7 +45,7 @@
    public static final Map<String, ArrayList<WebSocketServer>> sessionMap = new ConcurrentHashMap<>();
    String username;
    Session session;
    public Session session;
    public WebSocketServer() {
        this.messages = new ArrayList<>();
@@ -58,6 +65,15 @@
            sessionMap.put(username, arrayListwebserver);
        } else {
            webSocketServers.add(this);
            // Short i=0;
            // for (WebSocketServer webSocketServer : webSocketServers) {
            //     if(webSocketServer==this){
            //         i++;
            //     }
            // }
            // if(i==0){
            //     webSocketServers.add(this);
            // }
        }
        log.info("有新用户加入,username={}, 当前在线人数为:{}", username, sessionMap.get(username).size());
@@ -81,15 +97,15 @@
    public void onClose(Session session, @PathParam("username") String username) {
        List<WebSocketServer> webSocketServers = sessionMap.get(username);
        ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
        if (webSocketServers.size() > 1) {
        if (webSocketServers.size()>1) {
            for (WebSocketServer webSocketServer : webSocketServers) {
                if (webSocketServer != this) {
                if(webSocketServer!=this){
                    arrayListwebserver.add(webSocketServer);
                }
            }
            sessionMap.put(username, arrayListwebserver);
            log.info("移除username={}一名用户session, {}的当前在线人数为:{}", username, username, sessionMap.get(username).size());
        } else {
        }else{
            sessionMap.remove(username);
            log.info("移除username={}一名用户session, {}连接关闭, 当前连接数为:{}", username, username, sessionMap.size());
        }
@@ -157,6 +173,4 @@
    public void clearMessages() {
        messages.clear();
    }
}