@Configurationpublic class WebSocketConfig { //tomcat啟動無需該配置 @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); }}
3。 建立服務端端點 (ServerEndpoint)
@Component@ServerEndpoint(value = “/message”)@Slf4jpublic class WebSocket { private static Map webSocketSet = new ConcurrentHashMap<>(); private Session session; @OnOpen public void onOpen(Session session) throws SocketException { this。session = session; webSocketSet。put(this。session。getId(),this); log。info(“【websocket】有新的連線,總數:{}”,webSocketSet。size()); } @OnClose public void onClose(){ String id = this。session。getId(); if (id != null){ webSocketSet。remove(id); log。info(“【websocket】連線斷開:總數:{}”,webSocketSet。size()); } } @OnMessage public void onMessage(String message){ if (!message。equals(“ping”)){ log。info(“【wesocket】收到客戶端傳送的訊息,message={}”,message); sendMessage(message); } } /** * 傳送訊息 * @param message * @return 全部都發送一遍 */ public void sendMessage(String message){ for (WebSocket webSocket : webSocketSet。values()) { webSocket。session。getAsyncRemote()。sendText(message); } log。info(“【wesocket】廣播訊息,message={}”, message); }}