whycxzp
2022-01-14 f317c790ad78f99d9795cb5195ea384f48b65e4f
更新websocket逻辑
1个文件已修改
19 ■■■■ 已修改文件
src/main/java/com/whyc/webSocket/DeviceWorkStateSocket.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/DeviceWorkStateSocket.java
@@ -12,6 +12,10 @@
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.lang.reflect.AccessibleObject;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;
@ServerEndpoint(value = "/deviceWorkState",encoders = WebSocketEncoder.class)
@Component
@@ -23,6 +27,8 @@
    private static Fbs9100StateService service;
    private static Map<String,Thread> threadMap = new HashMap<>();
    @Autowired
    public void setService(Fbs9100StateService service) {
        DeviceWorkStateSocket.service = service;
@@ -30,10 +36,15 @@
    @OnMessage
    public void onMessage(Session session,String msg){
        //停止当前socket的线程
        Thread threadBefore = threadMap.get(session.getId());
        if(threadBefore !=null && threadBefore.isAlive()){
            threadBefore.interrupt();
        }
        Fbs9100State stateParam = ActionUtil.getGson().fromJson(msg, Fbs9100State.class);
        thread = new Thread("Thread_DeviceWorkState") {
        this.thread = new Thread("Thread_DeviceWorkState") {
            public void run() {
                while (!thread.isInterrupted()) {
                while (!DeviceWorkStateSocket.this.thread.isInterrupted()) {
                    try {
                        if (session.isOpen()) {
                            session.getBasicRemote().sendObject(service.getList(stateParam.getDevId().intValue(),stateParam.getDevWorkstate(),Long.parseLong(stateParam.getNote())));
@@ -45,7 +56,9 @@
                }
            }
        };
        thread.start();
        this.thread.start();
        //将线程存储,便于调用定位
        threadMap.put(session.getId(), this.thread);
    }
    @OnOpen