javascript
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:编码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 权限777_Linux编程之
- 下一篇: gradle idea java ssm