最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot使用WebSocket的方法實(shí)例詳解

 更新時(shí)間:2019年06月17日 09:36:19   作者:茍富貴  
WebSocket 是 HTML5 開始提供的一種在單個(gè) TCP 連接上進(jìn)行全雙工通訊的協(xié)議。這篇文章主要介紹了SpringBoot使用WebSocket,需要的朋友可以參考下

WebSocket 是 HTML5 開始提供的一種在單個(gè) TCP 連接上進(jìn)行全雙工通訊的協(xié)議。

WebSocket 使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,允許服務(wù)端主動(dòng)向客戶端推送數(shù)據(jù)。在 WebSocket API 中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸。

在 WebSocket API 中,瀏覽器和服務(wù)器只需要做一個(gè)握手的動(dòng)作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。

java怎么寫

配置Bean

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

java鏈接

/**
 * token為前端連接時(shí)的標(biāo)識(shí),后端根據(jù)此token維護(hù)用戶與webSocket的綁定
 */
@Component
@ServerEndpoint("/webSocket/{token}")
public class WebSocket {
  private Session session;
  private static ConcurrentHashMap<String, WebSocket> webSocketMap = new ConcurrentHashMap<>();
  @OnOpen
  public void onOpen(@PathParam(value = "token") String token, Session session) {
    this.session = session;
    webSocketMap.put(token, this);
    System.out.println("new connect:" + token + ". total :" + webSocketMap.size());
  }
  @OnClose
  public void onClose(@PathParam(value = "token") String token) {
    webSocketMap.remove(token);
    System.out.println("disconnect:" + token + ", total:" + webSocketMap.size());
  }
  @OnMessage
  public void onMessage(String message) {
    System.out.println("get message: " + message);
  }
  public void sendMessage(String message) {
    // 根據(jù)業(yè)務(wù)邏輯,找到token指向的webSocket
    WebSocket webSocket = webSocketMap.get(String.valueOf(message.charAt(0)));
    // 找不到返回
    if (webSocket == null) {
      return;
    }
    try {
      webSocket.session.getBasicRemote().sendText(message);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

前端怎么寫

/**
   * WebSocket客戶端
   *
   * 使用說明:
   * 1、WebSocket客戶端通過回調(diào)函數(shù)來(lái)接收服務(wù)端消息。例如:webSocket.onmessage
   * 2、WebSocket客戶端通過send方法來(lái)發(fā)送消息給服務(wù)端。例如:webSocket.send();
   */
  function getWebSocket() {
    /**
     * WebSocket客戶端 PS:URL開頭表示W(wǎng)ebSocket協(xié)議 中間是域名端口 結(jié)尾是服務(wù)端映射地址
     */
    var webSocket = new WebSocket(/*[[${webSocketUrl}]]*/ 'ws://localhost:8080/webSocket/2');
    /**
     * 當(dāng)服務(wù)端打開連接
     */
    webSocket.onopen = function (event) {
      console.log('WebSocket打開連接');
    };
    /**
     * 當(dāng)服務(wù)端發(fā)來(lái)消息:1.廣播消息 2.更新在線人數(shù)
     */
    webSocket.onmessage = function (event) {
      console.log('WebSocket收到消息:%c' + event.data, 'color:green');
    };
    /**
     * 關(guān)閉連接
     */
    webSocket.onclose = function (event) {
      console.log('WebSocket關(guān)閉連接');
    };
    /**
     * 通信失敗
     */
    webSocket.onerror = function (event) {
      console.log('WebSocket發(fā)生異常');
    };
    return webSocket;
  }

總結(jié)

以上所述是小編給大家介紹的SpringBoot使用WebSocket的方法實(shí)例詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • 解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問題

    解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問題

    這篇文章主要介紹了解決JAVA8 Collectors.toMap value為null報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-01-01
  • 簡(jiǎn)單了解java數(shù)組傳遞方法

    簡(jiǎn)單了解java數(shù)組傳遞方法

    這篇文章主要介紹了簡(jiǎn)單了解java數(shù)組傳遞方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • SpringCloud服務(wù)之間Feign調(diào)用不會(huì)帶上請(qǐng)求頭header的解決方法

    SpringCloud服務(wù)之間Feign調(diào)用不會(huì)帶上請(qǐng)求頭header的解決方法

    在Spring?Cloud中,使用Feign進(jìn)行服務(wù)之間的調(diào)用時(shí),默認(rèn)情況下是不會(huì)傳遞header的,這篇文章給大家介紹SpringCloud服務(wù)之間Feign調(diào)用不會(huì)帶上請(qǐng)求頭header的解決方法,感興趣的朋友一起看看吧
    2024-01-01
  • Spring?Boot數(shù)據(jù)響應(yīng)問題實(shí)例詳解

    Spring?Boot數(shù)據(jù)響應(yīng)問題實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于Spring?Boot數(shù)據(jù)響應(yīng)問題的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng)

    JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng)

    這篇文章主要介紹了JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 如何在SpringBoot+Freemarker中獲取項(xiàng)目根目錄

    如何在SpringBoot+Freemarker中獲取項(xiàng)目根目錄

    這篇文章主要介紹了如何在SpringBoot+Freemarker中獲取項(xiàng)目根目錄的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • JAVA中的字段校驗(yàn)(validation)

    JAVA中的字段校驗(yàn)(validation)

    這篇文章主要介紹了JAVA中的字段校驗(yàn)(validation)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 深入淺析HashMap key和value能否為null

    深入淺析HashMap key和value能否為null

    HashMap的key和value可為null,線程不安全,HashTable的key和value均不可為null,線程安全,ConcurrentHashMap在多線程場(chǎng)景下使用,key和value也不能為null,還對(duì)它們進(jìn)行了測(cè)試和底層代碼分析,本文介紹HashMap key和value能否為null,感興趣的朋友跟隨小編一起看看吧
    2025-04-04
  • MybatisPlus 主鍵策略的幾種實(shí)現(xiàn)方法

    MybatisPlus 主鍵策略的幾種實(shí)現(xiàn)方法

    MybatisPlus-Plus支持多種主鍵生成策略,可以通過@TableId注解的type屬性配置,主要策略包括AUTO、INPUT、ASSING_ID、ASSING_UUID和NONE,每種策略適用于不同的場(chǎng)景,下面就來(lái)介紹一下
    2024-10-10
  • Spring Boot集成Ehcache緩存解決方式

    Spring Boot集成Ehcache緩存解決方式

    在本篇文章里小編給大家整理的是關(guān)于Spring Boot集成Ehcache緩存解決方式,需要的朋友們可以學(xué)習(xí)下。
    2019-12-12

最新評(píng)論

普宁市| 苍南县| 土默特左旗| 惠东县| 浑源县| 灵川县| 卓尼县| 景谷| 彭水| 宣城市| 华池县| 仙居县| 泰州市| 东城区| 丽江市| 湛江市| 桃园市| 抚顺县| 布尔津县| 岳普湖县| 出国| 连城县| 宁海县| 天柱县| 康保县| 建宁县| 贵南县| 农安县| 女性| 龙里县| 楚雄市| 仙桃市| 商水县| 瓦房店市| 澎湖县| 东城区| 巍山| 嘉善县| 揭东县| 宁波市| 博罗县|