咳咳,在這裏呢,小軒就很少說什麼是WebSocket的,還有呢,小軒爲何不給出JS-Client代碼?網上太多代碼能夠用了。小軒這裏的WebSocket客戶端是非JS客戶端,由於小軒的項目後臺邏輯要與WebSocket服務器通訊,因此才搞了個客戶端出來。很少說,先上成果圖。前端
啓動WebSocket服務器java
啓動項目(客戶端1)git
使用ws-js客戶端與服務器創建鏈接(客戶端2)github
調用項目接口,由客戶端1給客戶端2發送消息。web
這裏,小軒能夠支持文本消息,也能夠支持二進制數據。固然,邏輯寫的很簡單,就是簡單的發送消息。可是能夠在此基礎上進行業務邏輯的修改,從而達到符合本身的業務需求。瀏覽器
好了,圖呢,就先到這裏,小軒這邊已經在正常使用中。沒有視頻演示還真是硬傷。tomcat
之因此看到tdg_yyx跟鏈接裏面的不同,是由於在小軒的項目中集成的客戶端中加了系統前綴。因此纔會有這樣的演示圖。固然,若是想知道具體再怎麼使用的話,依舊能夠聯繫小軒我哦。服務器
例子中的編碼解碼數據是使用的MsgPack對對象進行了序列化。可是從服務器發給瀏覽器客戶端的時候使用的是文本消息哦。socket
項目源碼已共享至github中,另起了一個新的repository哦。與以前的demo分開了。能夠直接拿下來進行修改的哦。工具
|- xpush
|——push-client
|————org.yyx.message.push.client
|——————client // 客戶端代碼
|——————config // 從yml文件中加載配置的Netty配置類包
|——————entity // 用來在服務器與客戶端之間進行傳輸的實體類包
|——————handler // WebSocket客戶端處理包
|——————listener // 用於啓動客戶端的監聽器
|——————util // 此處應該寫接口,主要用來作傳輸消息的邏輯
|————PushClientApplication // SpringBoot 啓動類
|——push-server
|————org.yyx.message.push.server
|——————config // 從yml文件中加載配置的Netty配置類包
|——————entity // 用來在服務器與客戶端之間進行傳輸的實體類包
|——————handler // WebSocket服務端處理包
|——————listener // WebSocket服務端監聽器
|——————main // 服務端代碼
|——————util // 此處應該寫接口,主要用來作傳輸消息的邏輯
|————ServerApplication.java // SpringBoot 啓動類
到目前爲止,仍然沒有看到客戶端的做用對吧。不急,向下看。
當Web服務器處理了一些業務,須要給當前用戶A發送消息通推送,能夠在後臺直接調用客戶端發送消息給用戶的方法,此時,就用到客戶端了。
WEB後臺調用client發送消息的方法,以上面提到的system_manage身份發送消息給指定用戶。消息以二進制數據到達服務端,服務端有寫好的業務邏輯,將消息解碼後,回寫數據給用戶A(沒錯,用戶A就是經過js與服務端創建鏈接的前臺用戶)固然,這裏也能夠作到給因此在線用戶發送消息。這裏就很少說了。原理是同樣的。