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