什么是 websocket?
websoket 是一種網絡通信協議,基于 tcp 連接的全雙工通信協議(客戶端和服務器可以同時收發信息),值得注意的是他不基于 http 協議,websocket 只有在建立連接的時候使用到 http 協議進行連接。
websoket 有如下特點:
- 只建立一次連接,后續會一直保持連接狀態
- 沒有同源限制,可以跨域
- 可以接受發送任何類型數據
- 協議是 ws 或 wss,wss 是加密的,增加了 ssl 協議
通過node實現websocket
提示:使用ts實現,運行代碼前需要執行如下操作
npm init
tsc --init
npm i @types/node -D
npm i ws
npm i @types/ws -D
import ws from "ws";
// 創建socket服務
const server = new ws.Server({ port: 8080 });
// 監聽連接的建立
const openHandle = () => { };
// 監聽連接關閉
const closeHandle = () => { };
// 監聽錯誤
const errorHandle = () => {};
const connectionHandle = (ws: ws) => {ws.on("message", messageHandle);
};
const messageHandle = (data: Buffer) => {// 需要注意的是websocket拿到的是二進制數據,需要通過toString進行轉換console.log(data.toString());// 將收到的信息廣播出去server.clients.forEach(item => {item.send(data.toString());});
};server.on("open", openHandle);
server.on("close", closeHandle);
server.on("error", errorHandle);
server.on("connection", connectionHandle);