WebSocket是一種基於TCP協議的網路通信協議,它允許客戶端和伺服器端之間建立持久性的、全雙工的連接。相較於傳統的HTTP協議,WebSocket能夠更有效地進行通信,因為它不需要像HTTP協議那樣每次通信都建立一個新的連接,而是通過一個初始握手來建立一個持久性的連接。
WebSocket 的優點
和 HTTP 最大的差別是,WebScoket 在建立連線之後,可以實現 client 與 server 的雙向溝通機制,也就是說,雙方可以即時的交換資訊,不用再等待 client 發出請求,或使用佔用資源的輪詢方式來實現。
另一方面,在建立連線之後就會持續保持著連線狀態,所以每次通訊時所發出的 message,就可以省略掉 headers 當中一些關於連線狀態的資訊,也就因此提高了效率。
WebSocket 常見的應用
- 即時聊天:WebSocket 可以用於在瀏覽器和服務器之間建立持久性連接,從而實現即時聊天。
- 在線遊戲:WebSocket 可以幫助線上遊戲在玩家之間建立即時通信的連接,以實現多人遊戲、實時對戰等功能。
- 實時資料傳輸:WebSocket 可以用於實現實時資料推送,例如股票報價、氣象預報等。通過 WebSocket 協議,服務器可以將最新的資料即時推送給客戶端,從而實現實時更新的效果。
- 在線協作:WebSocket 可以用於實現在線協作。
WebSocket 的使用
WebSocket API (client 端) 的範例可以參考:
https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
以下是Client的簡單範例:
// Create WebSocket connection.
const socket = new WebSocket("wss://echo.websocket.org");
// Connection opened
socket.addEventListener('open', function (event) {
console.log('Open connection')
socket.send('Hello Server!');
});
// Listen for messages
socket.addEventListener('message', function (event) {
console.log(`Message from server: ${event.data}`);
});