91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Netty中如何實現客戶端與服務器端的長連接

發布時間:2021-11-23 22:17:07 來源:億速云 閱讀:2312 作者:柒染 欄目:大數據

本篇文章給大家分享的是有關Netty中如何實現客戶端與服務器端的長連接,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

Netty通過webSocket實現服務器與客戶端的長連接,Tomcat8,Spring,Netty提供了對websocket的支持,實現了真正意義上的長連接!

我們通過簡單的實現,體驗下這個長連接!

體驗之前先說下Http與websocket的關系介紹:

       Http是一個無狀態的,協作的響應式鏈接,所謂的無狀態體現在服務器是無法追蹤到根消息來自哪個客戶端的,通過cookei,session的形式保存消息

        在網頁聊天中,通過輪詢,commit的形式實現短時間的鏈接,這種通過重復建立鏈接的方式是效率較低,且最重要的是不能實時的,也就是準實時性。

         持續鏈接的方式,體現在當服務器無結果返回時,客戶端無法感知,對于資源,帶寬的浪費;

         websocket實現了真正意義上的客戶端與服務器端的長連接,節省帶寬,而關注內容本身

          websocket:1--:雙向數據傳遞

                               2--:基于Http

                               3--:非瀏覽器場合

下面我們通過程序的運行體會一下!

建立server端!

Netty中如何實現客戶端與服務器端的長連接

我們發現無論是對Http的支持還是對socket連接,其建立運行的方式都是一致的,在server端新增了handler(new LoggingHnadler),用于打印日志

綁定端口號8899,new InetSocketAddress等同于直接綁定8899

建立serverInnitializer

Netty中如何實現客戶端與服務器端的長連接

這里的ws解釋為websocketPath,即為請求時pathcoment

例如本次:ws://localhost:8899/ws

ws是指文末的ws,而開頭的ws是固定的websocket的書寫方式

其中HttpObjectAggregator是聚合處理,點進去看一下

Netty中如何實現客戶端與服務器端的長連接

創建了一個示例,參數時max的文本長度,可聚合字節,相當于分段的理念

創建自己的handler

Netty中如何實現客戶端與服務器端的長連接

為了體驗消息的實時性,用localdateTime.now()打印系統時間

這里我們看下asLongText的源碼

Netty中如何實現客戶端與服務器端的長連接

ChannelId繼承了serializable

其中asShortText為:返回一個短文本但不是唯一的一個channelId'

其中asLongText為:返回一個長文本但是唯一的一個channelId‘

websocket支持Html或第三方庫的運行方式,我們寫一下頁面

Netty中如何實現客戶端與服務器端的長連接

一個發送數據的文本框,一個接收數據的文本框

js部分

Netty中如何實現客戶端與服務器端的長連接

我們先啟動server端

Netty中如何實現客戶端與服務器端的長連接

再啟動Html

Netty中如何實現客戶端與服務器端的長連接

當鏈接打開時,顯示了鏈接開啟!我們看下服務器端的變化

Netty中如何實現客戶端與服務器端的長連接

當鏈接建立時調用handleradd方法,并且打印了類似UUID的字符串

我們發送數據體驗一下

Netty中如何實現客戶端與服務器端的長連接

Netty中如何實現客戶端與服務器端的長連接

我們對比下除了正常相應內容以外,我們注意下時間

2019-01-20T13:09:14.322

2019-01-20T13:09:14.321

在毫秒級的偏差內到達!!!

我們打開開發者工具,刷新瀏覽器

Netty中如何實現客戶端與服務器端的長連接

與此同時服務器端變化:

Netty中如何實現客戶端與服務器端的長連接

test響應碼200,沒什么好說的

我們再看下ws:

Netty中如何實現客戶端與服務器端的長連接

比較一下

Netty中如何實現客戶端與服務器端的長連接

除了響應碼是特殊的101(Switching)以外,我們看到信息里還體現了幀(frame)

以及upgrade(提升):websocket

在這里體現了從Http提升到websocket的過程!!!

準備斷開

Netty中如何實現客戶端與服務器端的長連接

以上就是Netty中如何實現客戶端與服務器端的長連接,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永泰县| 遂溪县| 绵阳市| 建德市| 拉萨市| 五河县| 潼南县| 宜川县| 丰宁| 千阳县| 普兰店市| 霍林郭勒市| 泗水县| 邛崃市| 松阳县| 石首市| 镇雄县| 潼关县| 大同市| 武宣县| 青神县| 石嘴山市| 双柏县| 定结县| 勐海县| 鱼台县| 荔浦县| 翼城县| 八宿县| 双流县| 武乡县| 普陀区| 额尔古纳市| 忻州市| 朝阳区| 贡山| 崇左市| 太谷县| 封开县| 荆门市| 平利县|