使用websocket實現聊天室功能

2021-09-12 23:46:57 字數 1612 閱讀 6308

websocket 是 html5 開始提供的一種在單個 tcp 連線上進行全雙工通訊的協議。

websocket 使得客戶端和伺服器之間的資料交換變得更加簡單,允許服務端主動向客戶端推送資料。在 websocket api 中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以建立永續性的連線,並進行雙向資料傳輸。

在 websocket api 中,瀏覽器和伺服器只需要做乙個握手的動作,然後,瀏覽器和伺服器之間就形成了一條快速通道。兩者之間就直接可以資料互相傳送。

現在,很多**為了實現推送技術,所用的技術都是 ajax 輪詢。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對伺服器發出http請求,然後由伺服器返回最新的資料給客戶端的瀏覽器。這種傳統的模式帶來很明顯的缺點,即瀏覽器需要不斷的向伺服器發出請求,然而http請求可能包含較長的頭部,其中真正有效的資料可能只是很小的一部分,顯然這樣會浪費很多的頻寬等資源。

html5 定義的 websocket 協議,能更好的節省伺服器資源和頻寬,並且能夠更實時地進行通訊。也就是說當需要保持長連線(實時通訊)和大量消耗頻寬的場景時,websocket就有了用武之地。

websocket有很多的使用場景,我會在後面依次寫出例子,今天的例子就是聊天室功能(訊息傳輸、長連線即時通訊)

服務端**

const

uuid

=require

('uuid');

const websocket =

require

("ws");

const websocketserver = websocket.server;

const wss =

newwebsocketserver()

;console.

log(

"listening port 8080");

//廣播處理函式

wss.

broadcast

=function

(request =))

;}wss.on(

"connection"

,(ws)

=>);

ws.on(

"message"

,(message)

=>);

});//廣播退出訊息

ws.on(

"close",(

)=>);

})})

;

前端**

<

!doctype html>

"en"

>

"utf-8"

>

"viewport" content=

"width=device-width, initial-scale=1.0"

>

"x-ua-compatible" content=

"ie=edge"

>

document<

/title>

websocket簡單實現聊天

1.多人聊天 from geventwebsocket.handler import websockethandler 請求處理wsgi http from geventwebsocket.server import wsgiserver 替換flask原來的wsgi服務 from geventwe...

WebSocket 和 Golang 實現聊天功能

這個示例應用程式展示了如何使用 websocket,golang 和 jquery 建立乙個簡單的web聊天應用程式。這個示例的源 在 這個示例需要 golang 開發環境。該頁面描述如何安裝開發環境。go get gary.burd.info go websocket chat go websoc...

websocket實現簡單聊天程式

先載入所需要的通訊模組 建立使用者列表和訊息列表 var person var history 繫結並監聽80埠 客戶端連線成功後,觸發響應事件connection,完成要繫結的事件並實現客戶端出發的事件 io.sockets.on connection function socket obj.co...