真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot整合WebSocket的示例分析

這篇文章主要介紹了 Spring Boot整合WebSocket的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

目前成都創(chuàng)新互聯(lián)公司已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、西豐網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

Spring Boot整合WebSocket

  1. 添加依賴到pom.xml

    
        org.springframework.boot
        spring-boot-starter-websocket
    

  2. 添加配置文件

    @Configuration
    public class WebSocketConfig {
        @Bean
        ServerEndpointExporter serverEndpointExporter() {
            return new ServerEndpointExporter();
        }
    }

  3. 添加WebSocket的服務(wù)端

    @Component
    @ServerEndpoint("/ws/{username}")
    public class WebSocketEchoServer {
    
        @OnOpen
        public void onOpen(Session session, @PathParam("username") String username) {
            System.out.println("username = " + username + " is online.");
    
        }
    
        @OnClose
        public void onClose(Session session, @PathParam("username") String username, CloseReason closeReason) {
            System.out.println("username = " + username + " is offline.");
            System.out.println("Closing a WebSocket due to " + closeReason.getReasonPhrase());
        }
    
        // @OnMessage
        // public String onMessage(String message, Session session) throws IOException {
        //     System.out.println("received message=" + message);
        //     return "echo " + message;
        // }
    
        @OnMessage
        public void onMessage(String message, Session session) throws IOException {
            System.out.println("received message=" + message);
            session.getBasicRemote().sendText("echo " + message);
        }
    
        @OnError
        public void onError (Session session, Throwable throwable) {
            System.out.println("發(fā)生錯誤");
            throwable.printStackTrace();
        }
    
        public void boardCast(Message message) {
            // todo: 遍歷所有的session,給所有session發(fā)送消息
    
        }
    }

  4. 測試頁面(WebSocket Client)

    
    
    
        
        測試頁面
        
    
    
    
    發(fā)送
    
    
    
    

    這里使用一個非常簡單的測試頁面,只包含一個輸入框和一個發(fā)送按鈕。

    當(dāng)我們點(diǎn)擊按鈕的時候,就把輸入框中的內(nèi)容,發(fā)送到服務(wù)端。

    測試頁面使用的服服務(wù)端的URI是"ws://localhost:8080/ws/tom",其中“tom”對應(yīng)的參數(shù)username。

常用注解說明

  • @ServerEndpoint:告訴容器將給定類視為WebSocket Server Endpoint。注解有一個必填參數(shù)value,用于指定路徑。

@ServerEndpoint("/hello") 
public class MyEndpoint { }

上訴代碼將發(fā)布一個相對路徑是hello的Endpoint。路徑可以包含在后續(xù)方法調(diào)用中使用的路徑參數(shù);例如,例如,/hello/{userid}是有效路徑,{userid}的值可以在方法調(diào)用中使用@PathParam注釋獲得。

默認(rèn)端口8080,WebSocket 可以使用如下地址訪問:ws://localhost:8080/mycontextroot/hello。

  • 聲明當(dāng)前類是WebSocket server,注解后面的字符串("/ws/{username}")指定監(jiān)聽的uri地址。這里“/ws/{username}”對應(yīng)的完整的地址“ws://localhost:8080/ws/XXX”, XXX代表是參數(shù)username的值。

  • @ClientEndpoint: 聲明當(dāng)前類是WebSocket Client。

  • @OnOpen: 在連接建立后調(diào)用,方法可以包含如下參數(shù)

    • javax.websocket.Session參數(shù)

    • EndpointConfig參數(shù),包含endpoint的配置信息

    • 0個或多個用 @PathParam注解的參數(shù)。

      @OnOpen
      public void myOnOpen (Session session) {
         System.out.println ("WebSocket opened: "+session.getId());
      }

  • @OnMessage: 接收到消息時調(diào)用,方法包含如下參數(shù):

    • javax.websocket.Session參數(shù)

    • 0個或多個用 @PathParam注解的參數(shù)

    • 接收到的消息,默認(rèn)是String類型。如果使用了編解碼函數(shù),也可以是Java Object類型。

      @OnMessage
      public void myOnMessage (String txt) {
         System.out.println ("WebSocket received message: "+txt);
      }

    • 上訴代碼的返回值是void,還有一種返回值不是void的寫法,這種實(shí)現(xiàn)會直接把返回值發(fā)送給客戶端。

      @OnMessage
      public String myOnMessage (String txt) {
         return txt.toUpperCase();
      }

      還有一個發(fā)送消息的方法:

      RemoteEndpoint.Basic other = session.getBasicRemote();
      other.sendText ("Hello, world");

  • @OnClose: 連接關(guān)閉時調(diào)用,方法可以包含如下參數(shù):

    @OnClose
    public void myOnClose (CloseReason reason) {
       System.out.prinlnt ("Closing a WebSocket due to "+reason.getReasonPhrase());
    }

    • javax.websocket.Session參數(shù)

    • javax.websocket.CloseReason參數(shù)

  • @OnError: 通訊過程中出現(xiàn)錯誤時調(diào)用

    • @OnError
      public void onError(Session session, Throwable throwable) {
          // Do error handling here
      }

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“ Spring Boot整合WebSocket的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!


當(dāng)前名稱:SpringBoot整合WebSocket的示例分析
文章轉(zhuǎn)載:http://weahome.cn/article/pdjcjj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部