999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于WebSocket協議的網頁即時通信系統研究與實現

2023-05-06 11:11:23王彬
無線互聯科技 2023年24期

王彬

摘要:隨著用戶對Web信息即時性要求的提高,一種不需要客戶端,完全基于網頁,提供定制化服務,在社區、論壇、電商網站中提供即時交流互動和服務的技術應運而生。對比HTTP和WebSocket 2種協議,文章設計了一種基于WebSocket協議的網頁即時聊天系統,通過全雙工消息傳遞,在瀏覽器和服務器之間創建了一條快速通道,實現了實時性要求,降低了服務器的資源占用率。聊天系統提供了用戶登錄、上線提醒、下線提醒和群發消息等功能,在保持傳統B/S即時通信系統易擴展和易管理特點的同時,在帶寬占用、消息收發時延方面具有顯著的性能優勢。

關鍵詞:即時通信;長輪詢;WebSocket協議;Node.js協議;Socket.io庫

中圖分類號:TP311.1? 文獻標志碼:A

0 引言

隨著互聯網的迅猛發展,Web數據的即時性要求愈發強烈,基于Web的即時通信應用也大量涌現,如在線小游戲、證券、實時直播和即時聊天等。目前,主流Web即時通信應用仍然是基于HTTP協議,通過HTTP請求響應模型,在客戶端和服務器之間進行請求和響應的交互,實現數據的傳輸和通信。為保障實時通信,需在瀏覽器和服務器之間不斷建立連接并響應,由于請求和響應是單向的,這種方式并不能實現真正的實時通信。服務器收到客戶端請求后,若造成阻塞,仍會保持連接,這種方式并不適合實時性要求較高的應用,并且占用服務器的資源。隨著技術的不斷發展,通過使用長輪詢、WebSocket技術[1]可以在HTTP連接上建立雙通信通道,實現實時的雙向數據傳輸。

基于HTML5[2]中定義的WebSocket協議改變了這種現狀,該協議在HTTP的基礎上進行了擴展,而非HTTP本身自帶的功能。該協議將客戶端的請求與服務器的響應這一傳統的工作方式改為雙向消息傳遞,在瀏覽器和服務器之間建立一次握手,即可創建一條快速通道,兩者之間即可直接進行數據交互,滿足了實時性要求,降低了服務器的資源占用。本文設計了一種基于WebSocket協議的網頁即時聊天系統,提供了用戶登錄、上線提醒、下線提醒和群發消息等功能,在保持傳統瀏覽器和服務器架構模式即時通信系統易擴展、易管理的同時[3],大大提高了即時通信系統的實時性,降低了服務器資源的占用率。

1 相關技術

1.1 WebSocket協議

通常情況下,在傳統的B/S系統通信中,服務端并不會主動與客戶端通信,必須要收到客戶端請求。客戶端首先發送一個請求,服務器端在接收到客戶端請求后,將處理結果返回到客戶端。因此,傳統Web應用滿足不了網頁版的即時通信需求。

WebSocket協議的出現徹底改變了這種通信方式。WebSocket協議是在HTML5規范中提出的一種全雙工通信協議,允許客戶端和服務器之間進行雙向實時通信[4-5]。而傳統的HTTP協議是單向通信,當客戶端HTTP請求發送到服務器端時,客戶端與服務器端將打開TCP連接;當客戶端收到服務器端響應后,TCP連接即終止,每個HTTP請求都會建立單獨的TCP連接。兩者之間的區別如圖1所示。

與HTTP協議不同,WebSocket協議只需要進行一次握手來建立連接,但是握手請求是通過HTTP協議進行的[6]。一旦WebSocket連接建立成功,客戶端和服務器之間可以通過該連接進行雙向通信。客戶端可以向服務器端發送數據,服務器端也可以主動向客戶端發送數據,而且連接可以一直保持開啟,直到其中一方主動斷開連接。

1.2 Socket.io庫

WebSocket雖然在實現實時通信方面有很多優勢,但在即時通信交互系統的消息處理過程中存在一

些局限。因為即時通信不僅涉及簡單的數據傳輸,還需要處理各種控制信息和狀態信息,以便對參與即時通信的用戶進行管理和控制。這些附加信息的處理可能需要額外的邏輯和協議來確保交互系統的完整性和穩定性。Socket.io是一個集成WebSocket協議的JavaScript庫[7],它不僅是對WebSocket協議的簡單封裝,還在此基礎上又增加了新的功能,并擴展了關于Session、Cookie和 JSON處理的API[8]。Socket.io由2部分組成:客戶端JavaScript庫和基于Node.js的服務器端庫,具有實時性、全雙工和事件驅動等特點,為實現基于網頁的即時通信提供了良好的解決方案。除了WebSocket協議,Socket.io還支持多種實時通信方式,并提供了統一的接口。這些方式包括Adobe Flash Socket、Ajax長輪詢、Ajax多部分流、持久Iframe和JSONP輪詢等。當Socket.io檢測到當前環境不支持WebSocket時,會自動選擇最優方式來實現網絡的實時通信。因此,Socket.io可以在不同環境下提供可靠的實時通信能力。

Socket.io在實現網絡即時通信時具有以下特點:(1)如果不能建立 WebSocket 連接,連接將退回到 HTTP 長輪詢。(2)在某些特定條件下,服務器端和客戶端之間的 WebSocket 連接可能會被中斷,雙方都不知道連接處于斷開狀態。而 http://Socket.io包含一個heartbeat機制,該機制定期檢查連接的狀態,當客戶端最終斷開連接時,它會自動重新連接,同時數據包將自動緩沖,并在重新連接時發送。(3)Socket.io客戶端和服務器端都具備了收到消息的回調功能。

(4)Socket.io服務器端提供了消息的廣播功能。

2 服務器端設計

基于Web頁面的即時通信服務器端主要采用了Node.js[9]結合Express和Socket.io來實現,服務器端主要包含3個功能:建立連接、監聽請求和斷開連接,具體如圖2所示。

當新用戶登錄時,服務器端通過獲取用戶的昵稱和用戶唯一標識,與當前請求的Socket對象進行綁定,更新在線人數,并向所有在線用戶推送用戶登錄信息和在線人數。網頁即時通信消息傳遞時序如圖3所示。

當服務器端監聽到客戶端發送的信息請求時,將用戶發送的信息轉發給所有在線用戶。當客戶端斷開連接時,從當前的在線用戶列表中將用戶信息刪除,并將用戶的退出信息和在線人數推送給在線用戶。

3 客戶端設計

網頁即時聊天的客戶端設計主要包括了用戶登錄模塊和監聽服務器端消息模塊,其中監聽服務器端消息模塊包括了監聽服務器端推送消息、在線人數和用戶退出信息,具體如圖4所示。

當用戶輸入昵稱登錄后,首先創建WebSocket客戶端對象,創建成功后,將用戶的昵稱和根據當前時間生成的唯一編號發送到服務器端,然后開始監聽服務器端的消息。

當客戶端接收到服務器端發送的信息時,再利用客戶端的DOM技術進行頁面渲染,將信息顯示到聊天窗口中,程序運行效果如圖5所示。

4 結語

本文提出的一種基于Node.js和WebSocket協議的網頁即時通信系統,實現了用戶在瀏覽網頁的同時,可與其他用戶進行即時通信,通信的實時性和高效性在實際使用中得到了驗證。隨著技術的不斷發? 展,基于WebSocket技術的語音、視頻、單聊、直播和文件傳輸功能也將進一步完善。

參考文獻

[1]浪潮軟件股份有限公司.一種基于websocket的android客戶端遠程調試系統:CN201911127153.1[P].2020-04-17.

[2]孫善毅.車輛主動安全視頻監控系統平臺關鍵技術研究與開發[D].徐州:中國礦業大學,2020.

[3]李仲岐.基于WebSocket即時通信系統設計與實現:第三十七屆中國(天津)2023IT、網絡、信息技術、電子、儀器儀表創新學術會議論文集[C].天津:天津市電子學會,2023.

[4]茆玉庭.基于Node.js和WebSocket的即時通信系統的設計與實現[D].南京:南京郵電大學,2018.

[5]杜明遠.基于WebSocket的即時通信系統設計與實現[D].大連:大連理工大學,2016.

[6]高銳,閆光輝,羅浩,等.基于WebSocket技術無線頻譜大數據實時監測系統設計與實現[J].蘭州交通大學學報,2022(1):52-60.

[7]張藝.基于WebSocket的即時通信系統研究與實現[J].軟件,2015(3):89-94.

[8]陸屹,趙巍.基于WebSocket的電信運營商視頻營業廳模式的研究與實現[J].計算機時代,2023(7):77-81.

[9]馬行健.利用WebSocket技術實現房源網小程序的即時通信[J].河北軟件職業技術學院學報,2022(4):23-26.

(編輯 王雪芬編輯)

Research and implementation of Web instant communication based on WebSocket protocol

Wang? Bin

(Department of Information Technology, Xuzhou Finance Branch, Jiangsu Union Technical Institute, Xuzhou 221008, China)

Abstract: With the increasing demand of users for the immediacy of web information, a technology that does not require a client, is completely based on web pages, providing customized services, and providing instant communication, interaction, and services in communities, forums, and e-commerce websites has emerged. This article compares HTTP and WebSocket protocols and designs a web instant messaging system based on the WebSocket protocol. Through full duplex messaging, it creates a fast channel between the browser and the server, achieving real-time requirements and reducing server resource usage. The chat system provides functions such as user login, online reminders, offline reminders, and group messaging. While maintaining the scalability and ease of management of traditional B/S instant messaging systems, it has significant performance advantages in bandwidth utilization and message transmission latency.

Key words: instant messaging; long poll; WebSocket protocol; Node.js protocol; Socket.io base

主站蜘蛛池模板: 色婷婷电影网| 一本大道AV人久久综合| 精品国产成人高清在线| 亚洲中文字幕在线观看| 亚洲美女一区| 亚洲视频色图| 色综合日本| 亚洲精品波多野结衣| 久久亚洲中文字幕精品一区| 色综合热无码热国产| 国产国语一级毛片| 欧美www在线观看| 亚洲一级色| 亚洲AⅤ综合在线欧美一区| 91精品aⅴ无码中文字字幕蜜桃 | 国产精品999在线| 永久在线播放| 亚洲日韩在线满18点击进入| 试看120秒男女啪啪免费| 东京热av无码电影一区二区| 国产精品亚洲αv天堂无码| 亚洲国产日韩在线成人蜜芽| 欧美国产视频| 国产久操视频| 在线观看亚洲国产| 91在线精品麻豆欧美在线| 亚洲无码A视频在线| 超清无码熟妇人妻AV在线绿巨人| 国产成人欧美| 成人免费午间影院在线观看| 国产成年无码AⅤ片在线| 亚洲一区二区视频在线观看| 亚洲精品无码在线播放网站| 久久精品国产精品国产一区| 色婷婷成人| 色老头综合网| 久久精品嫩草研究院| 91无码视频在线观看| 无码区日韩专区免费系列| 日韩色图区| 久久综合国产乱子免费| 成人中文字幕在线| 精品亚洲国产成人AV| 中文天堂在线视频| 午夜视频www| 免费啪啪网址| 成年av福利永久免费观看| 91娇喘视频| 国产91小视频| 自拍亚洲欧美精品| 啊嗯不日本网站| 67194亚洲无码| 亚洲国产精品日韩专区AV| 国产小视频a在线观看| 极品国产一区二区三区| 成人a免费α片在线视频网站| 亚洲福利一区二区三区| 伊人久久精品亚洲午夜| 99999久久久久久亚洲| 国产99视频精品免费观看9e| 亚洲欧美另类日本| 97久久人人超碰国产精品| 91精品国产丝袜| 一级毛片免费观看久| 色欲国产一区二区日韩欧美| 9999在线视频| 国产精品久久久久久久久kt| 国产精品色婷婷在线观看| 久久黄色小视频| 国产高潮流白浆视频| 天天色综网| 欧美一区二区三区不卡免费| 欧美不卡视频在线| 爱做久久久久久| 人妻精品久久无码区| 欧美一区二区福利视频| 亚洲国产成熟视频在线多多| 国产午夜看片| 国产福利一区视频| 欧美一区二区三区国产精品| 成人小视频在线观看免费| 4虎影视国产在线观看精品|