package com.qianwen.smartman.common.websocket.realtime; import com.alibaba.fastjson.JSONObject; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import com.qianwen.core.websocket.custom.SubscriptionSessionFilter; import org.springframework.stereotype.Component; import org.springframework.web.socket.WebSocketSession; @Component public class RealTimeDataJsonSubscriptionFilter implements SubscriptionSessionFilter { private static Map map = new HashMap<>(); public String type() { return "realTimeData"; } public void onMessage(WebSocketSession session, RealTimeDataRequestJsonWebSocketMessage webSocketMessage) { map.put(session.getId(), webSocketMessage); } public List onResponse(String messageText) { RealTimeDaraResponseJsonWebSocketMessage responseMessage = (RealTimeDaraResponseJsonWebSocketMessage) JSONObject.parseObject(messageText, RealTimeDaraResponseJsonWebSocketMessage.class); return map.keySet().stream().filter(key -> { return map.get(key).getWorkstationIdList() == null || map.get(key).getWorkstationIdList().isEmpty() || (map.get(key).getWorkstationIdList().contains(responseMessage.getId()) && responseMessage.getType().equals(map.get(key).getType())); }).collect(Collectors.toList()); } public void onClose(WebSocketSession session) { map.remove(session.getId()); } }