1. 程式人生 > 其它 >Java 實現WebSocket主動推送訊息

Java 實現WebSocket主動推送訊息

Java 實現WebSocket主動推送訊息

1、在pom.xml中新增jar包依賴

     <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-websocket</artifactId>
            <version>5.0.7.RELEASE</version>
        </dependency>

2、Java後端程式碼(服務端)

import
org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; import java.util.concurrent.CopyOnWriteArraySet; /** * @ServerEndpoint 註解是一個類層次的註解,它的功能主要是將目前的類定義成一個websocket伺服器端, * 註解的值將被用於監聽使用者連線的終端訪問URL地址,客戶端可以通過這個URL來連線到WebSocket伺服器端 */ @ServerEndpoint(
"/dnh/websocket") @Component public class WebsocketService { private static final Logger logger = LoggerFactory.getLogger(WebsocketService.class); private Session session; private static final CopyOnWriteArraySet<WebsocketService> SESSIONS = new CopyOnWriteArraySet<>(); @OnOpen
public void onOpen(Session session) { this.session=session; SESSIONS.add(this); logger.info("websocket連線成功,總數為:"+SESSIONS.size()); } @OnClose public void onClose() { SESSIONS.remove(this); logger.info("websocket斷開連線,總數為"+SESSIONS.size()); } @OnMessage public void onMessage(String message) { logger.info("收到的訊息:"+message); } /** * 傳送訊息(將資料轉為String/JSON) * @param message 內容 */ public void sendMessage(String message){ try { for (WebsocketService websocketService:SESSIONS){ logger.info("【websocket訊息】廣播訊息:{}"+message); try { websocketService.session.getBasicRemote().sendText(message); }catch (Exception e){ logger.error(e.getMessage(), e); } } }catch (Exception e){ logger.error(e.getMessage(), e); } } }

提供一個詳細可參考:https://www.cnblogs.com/xdp-gacl/p/5193279.html