package com.fzzy.gateway.hx2023.websocket; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.websocket.*; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import java.util.HashMap; import java.util.Map; /** * */ @Slf4j @Component @ServerEndpoint(value = "/mqtt") public class WebSocketMqtt { private static Map sessionPool = new HashMap<>(); // 与某个客户端的连接会话,需要通过它来给客户端发送数据 private Session session; private String key; @OnOpen public void onOpen(Session session, @PathParam("keepalive") String keepalive, @PathParam("clientId") String clientId, @PathParam("protocolId") String protocolId, @PathParam("protocolVersion") String protocolVersion, @PathParam("clean") String clean, @PathParam("reconnectPeriod") String reconnectPeriod, @PathParam("reconnectTimeout") String reconnectTimeout ) throws Exception { this.session = session; key = clientId; sessionPool.put(key, session); log.info("new webSocket,clientId={}", key); } @OnClose public void onClose() { sessionPool.remove(key); log.info("WebSocket连接关闭={}", key); } /** * 收到前端发送的信息 * * @param message * @param session */ @OnMessage public void onMessage(String message, Session session) { log.info("来自客户端信息:\n" + message); } @OnError public void onError(Session session, Throwable error) { log.error("发生错误"); sessionPool.remove(key); error.printStackTrace(); } }