springboot+websocket 的簡單實現

springboot+websocket實現後臺與客戶端"全雙工"通信

  1. 項目結構圖:

    70

2. 開發工具是IDEA, 創建springboot項目,在pox.xml中加入(下面是我的pom.xml的dependencies裏的全部依賴,因爲,這個是最簡單的入門例子,所以只有主要的websocket和web依賴)

    <dependencies>

     <dependency>

     <groupId>org.springframework.boot</groupId>

     <artifactId>spring-boot-starter-web</artifactId>

     </dependency>

     <!--websocket連接需要使用到的包-->

     <dependency>

     <groupId>org.springframework.boot</groupId>

     <artifactId>spring-boot-starter-websocket</artifactId>

     </dependency>

     <dependency>

     <groupId>org.springframework.boot</groupId>

     <artifactId>spring-boot-starter-test</artifactId>

     <scope>test</scope>

     </dependency>

    </dependencies>

3.創建一個頁面index.html,前端跳轉後端的一些必要代碼,貼部分代碼

WebSocket建立連接WebSocket關閉連接

JS代碼如下:

(document).(() {

        websocket = ().(() {
            host = document..(window) {
                ()websocket = WebSocket(+ host ++ )} {
                ()
            }

            websocket.= () {
                ()()}websocket.= () {
                ()()}websocket.= (event) {
                ()(+ event.)(event.)}websocket.= () {
                ()}
        })

        ().(() {
            (websocket != ) {
                websocket.()}
            ()
        })

    })(innerHTML) {
        ().(innerHTML)}

JAVA後臺代碼:

com.eeka.wmslight.controller.configcom.eeka.wmslight.model.opm.Usercom.google.common.collect.Mapsorg.apache.shiro.SecurityUtilsorg.springframework.stereotype.javax.websocket.*javax.websocket.server.javax.websocket.server.java.io.IOExceptionjava.util.Mapjava.util.concurrent.CopyOnWriteArraySet()
MyWebSocket {

    = CopyOnWriteArraySet<MyWebSocket> = CopyOnWriteArraySet<MyWebSocket>()Map<IntegerMyWebSocket> = Maps.()Session Integer (() Integer userIdSession session){

        .= userId.= session.put(userId).add()()System..println(+ ())}

    (){

        .remove()()System..println(+ ())}

    (String messageSession session) {

        System..println(+ message)(MyWebSocket item: ){

            }
    }

    (Session sessionThrowable error){
        System..println()error.printStackTrace()}

    (String messageInteger userId) IOException{
        MyWebSocket socket = .get(userId)(socket != ) {
            socket..getBasicRemote().sendText(message)}

        }

    () {
        }

    () {
        MyWebSocket.++}

    () {
        MyWebSocket.--}

}

SpringBoot需要注入WebSocketConfig

WebSocketConfig {

    ServerEndpointExporter (){
        ServerEndpointExporter()}

}

4.然後在業務類裏面集成MyWebSocket

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章