日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

springboot socket服务端_从零开始学SpringBoot之Spring Boot WebSocket:编码分析

發布時間:2024/1/23 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot socket服务端_从零开始学SpringBoot之Spring Boot WebSocket:编码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

在上一篇文章中講到了WebSocket的原理,這節中我們先簡單的編碼分析下,這樣有助于在之后的實戰編碼。

說明:

(1)編碼中使用的Spring Boot版本是:1.5.8;

(2) 使用WebSocket有兩種方式: 第一種方式使用socketJS, 第二種方式是使用H5的標準。實例中使用的是第二種方式;

(3)最后提供源代碼;

編碼分析:

在例子中,我們需要編寫兩端的代碼:服務端和客戶端(當然代碼都在一個工程里)。

(1)Client:客戶端說明

客戶端的代碼主要是使用H5的WebSocket進行實現,在前端網頁中使用WebSocket進行連接服務端,然后建立Socket連接進行通訊。

(2)Server:服務端說明

服務端主要是建立多個客戶端的關系,進行消息的中轉等。客戶端成功連接到服務端之后,就可以通過建立的通道進行發送消息到服務端,服務端接收到消息之后在群發給所有的客戶端。

(3)客戶端和服務端怎么連接?

客戶端通過JS中的WebSocket對象進行連接到服務端:

服務端映射出在上面使用的/websocket 端點呢,使用注解@ServerEndpoint即可:

當客服端有連接請求了,服務端怎么接收請求,使用注解@OnOpen即可:

(4)客戶端和服務端怎么發送消息?

客戶端可以使用webSocket提供的send()方法,如下代碼:

服務端怎么發送消息呢?主要是使用在成功建立連接的時候,創建的Session對象進行發送,如下代碼:

(5)客戶端和服務端怎么接收消息?

客戶端接收消息消息使用的是websocket的onmessage回調方法,如下代碼:

服務端怎么接收到消息,使用注解@OnMessage,如下代碼:

(6)客戶端和服務端關閉連接處理?

客戶端使用websocket.close()進行關閉連接;

服務端使用@OnClose注解監聽客戶端的關閉動作。

(7)客戶端和服務端異常處理?

客戶端當有異常信息的時候會回調方法:websocket.onerror;

服務端使用@OnError注解監聽異常信息。

(8)群聊原理(群發消息)

服務端在和客戶端建立連接的時候,會創建一個webSocket對象,我們會將每個連接創建的對象進行報錯到一個列表中,比如:CopyOnWriteArraySet(這是線程安全的);在要進行群發的時候,編寫我們的列表對象進行群發消息。

(9)單聊原理(一對一消息)

單聊的時候,就無需遍歷列表,而是需要知道發送者和接受者各自的Session對象,這個Session對象怎么獲取呢?Session可以獲取到sessionId,發送者在發送消息的時候,攜帶接收消息的sessionId,那么問題就演變成了:發送者怎么知道接受者的sessionId,那就是加入一個在線用戶列表即可,在線用戶列表中有用戶的基本信息,包括sessionId。

明白了這些,在接下里的編碼中就會輕松很多。

轉載自阿里大牛悟纖的公眾號。

總結

以上是生活随笔為你收集整理的springboot socket服务端_从零开始学SpringBoot之Spring Boot WebSocket:编码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。