昨天了解了Websocket是甚麼,那今天我們就來實際操作websocket吧
Websocket的流程給他劃成四個階段
Node.js中有一個WS套件就是用來實現Websocket sever的,所以首先我們先安裝好Node.js
然後安裝npm install ws
接下來開始建立server.js
const WebSocket = require("ws");
//創建websocket服務器接口8080
const wss = new WebSocket.Server({ port: 8080 });
wss.on("connection", function (ws) {
console.log("client 連接成功");
//處理接受到的消息
ws.on("message", function (message) {
console.log("接收到客戶端消息:" + message);
ws.send("服務端回復:" + message);
});
ws.on("close", function () {
console.log("client 關閉連接");
});
ws.on("error", function (err) {
console.log("client 連接出錯:" + err);
});
ws.send("歡迎來到websocket服務器");
});
console.log("websocket服務器port->ws://localhost:8080");
然後運行伺服器 node server.js
接下來觀察程式碼,從上可以看出Websocket的三項Event,那有沒有好奇怎麼少了open?
原因是後端無法直接觸發 open 事件,因為後端並不建立連接,而是等待客戶端連接。後端使用 connection 事件來處理新的連接請求。所以後端是無法觸發open事件的。
既然開好了server那就用前端簡單連一下吧
建個index.html跟index.js,html的部分就單純引入js即可
const ws = new WebSocket('ws://localhost:8080');
// 連接成功時觸發
ws.onopen = () => {
console.log('Connected to WebSocket server');
ws.send('Hello Server!');
};
// 接收到消息時觸發
ws.onmessage = (event) => {
console.log('Received from server:', event.data);
};
// 連接關閉時觸發
ws.onclose = () => {
console.log('Disconnected from WebSocket server');
};
// 連接出錯時觸發
ws.onerror = (error) => {
console.error('WebSocket error:', error);
};
不過這裡沒做甚麼事比較容易觀察到的就是開啟跟關閉,至於為甚麼後端會有message是因為前端send的關係唷
下篇則會好好的觀察下Websocket的運作