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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM