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...