jiazx0107@163.com
2023-10-26 233c0e20548cadafb77efdcb3418f38c6658bbad
src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDeviceReport.java
ÎļþÃû´Ó src/main/java/com/fzzy/gateway/hx2023/websocket/WebSocketDevice.java ÐÞ¸Ä
@@ -1,6 +1,7 @@
package com.fzzy.gateway.hx2023.websocket;
import com.alibaba.fastjson.JSONObject;
import com.fzzy.gateway.GatewayUtils;
import com.fzzy.gateway.hx2023.ScConstant;
import com.fzzy.gateway.hx2023.data.WebSocketPacket;
import lombok.extern.slf4j.Slf4j;
@@ -19,7 +20,7 @@
@Slf4j
@Component
@ServerEndpoint(value = "/device/{productId}/{deviceId}/message/property/report")
public class WebSocketDevice {
public class WebSocketDeviceReport {
    private static Map<String, Session> sessionPool = new ConcurrentHashMap<>();
    private static Map<String, String> sessionIds = new ConcurrentHashMap<>();
@@ -42,7 +43,7 @@
        sessionPool.put(key, session);
        sessionIds.put(session.getId(), key);
        ScConstant.updateOnline(deviceId);
        GatewayUtils.updateOnline(deviceId);
        log.info("new webSocket,clientId={}", key);
    }
@@ -52,9 +53,9 @@
        String key = sessionIds.get(session.getId());
        String deviceId = key.substring(0, key.indexOf("-"));
        String deviceId = key.substring(key.indexOf("-"));
        ScConstant.updateOffOnline(deviceId);
        GatewayUtils.updateOffOnline(deviceId);
        sessionPool.remove(key);
        sessionIds.remove(session.getId());
@@ -81,9 +82,9 @@
        String key = sessionIds.get(session.getId());
        String deviceId = key.substring(0, key.indexOf("-"));
        String deviceId = key.substring(key.indexOf("-"));
        ScConstant.updateOffOnline(deviceId);
        GatewayUtils.updateOffOnline(deviceId);
        sessionPool.remove(key);
        sessionIds.remove(session.getId());
@@ -96,17 +97,24 @@
     *
     * @param packet
     */
    public static void sendByPacket(WebSocketPacket packet) {
    public void sendByPacket(WebSocketPacket packet) {
        if (StringUtils.isEmpty(packet.getDeviceId())) {
            log.error("WebSocket信息推送失败,设备编码为空。");
            return;
        }
        String tag = packet.getDeviceId();
        // éåŽ†æŽ¨é€
        Session session;
        String productId;
        for (String key : sessionPool.keySet()) {
            productId = key.substring(0, key.indexOf("-"));
            packet.getHeaders().setProductId(productId);
            if (key.indexOf(tag) != -1) {
                session = sessionPool.get(key);
                session.getAsyncRemote().sendText(