將WebSockets與Node.js結合使用

WebSocket是Web應用程序中HTTP通信的替代方法。它們在客戶端和服務器之間提供了長期的雙向通信通道。

WebSocket是Web應用程序中HTTP通信的替代方法。

它們在客戶端和服務器之間提供了長期的雙向通信通道。

建立通道後,通道將保持開放狀態,從而提供非常快速的連接,且延遲時間和開銷均較低。

瀏覽器對WebSocket的支持

所有現代瀏覽器都支持WebSocket。

Browser support for WebSockets

WebSockets與HTTP有何不同

HTTP是一個非常不同的協議,也是一種不同的通信方式。

HTTP是一個請求/響應協議:服務器在客戶端請求時返回一些數據。

使用WebSockets:

  • 服務器可以向客戶端發送消息沒有客戶明確要求的東西
  • 客戶端和服務器可以同時互相交談
  • 很少的數據開銷需要進行交換以發送消息。這意味著低延遲通信

Web套接字非常適合即時的長壽的通訊。

HTTP非常適合偶爾的數據交換以及客戶發起的互動。

HTTP更簡單實現,而WebSocket則需要更多的開銷。

安全的WebSockets

始終對WebSocket使用安全的加密協議,wss://

ws://指的是不安全的WebSockets版本(http://WebSockets),並且出於明顯的原因應避免使用。

創建一個新的WebSockets連接

const url = 'wss://myserver.com/something'
const connection = new WebSocket(url)

connection是一個WebSocket目的。

成功建立連接後,open事件被觸發。

通過將回調函數分配給onopen的屬性connection目的:

connection.onopen = () => {
  //...
}

如果有任何錯誤,onerror函數回調被觸發:

connection.onerror = error => {
  console.log(`WebSocket error: ${error}`)
}

使用WebSockets將數據發送到服務器

打開連接後,您可以將數據發送到服務器。

您可以在內部方便地進行操作onopen回調函數:

connection.onopen = () => {
  connection.send('hey')
}

使用WebSocket從服務器接收數據

使用回調函數進行監聽onmessage,當message收到事件:

connection.onmessage = e => {
  console.log(e.data)
}

在Node.js中實現WebSockets服務器

ws是一個流行的WebSockets庫Node.js

我們將使用它來構建WebSockets服務器。它還可以用於實現客戶端,並使用WebSocket在兩個後端服務之間進行通信。

使用輕鬆安裝

yarn init
yarn add ws

您需要編寫的代碼很少:

const WebSocket = require('ws')

const wss = new WebSocket.Server({ port: 8080 })

wss.on(‘connection’, ws => { ws.on(‘message’, message => { console.log(Received message =&gt; </span><span style="color:#e6db74">${</span><span style="color:#a6e22e">message</span><span style="color:#e6db74">}</span><span style="color:#e6db74">) }) ws.send(‘ho!’) })

這段代碼在端口8080(WebSockets的默認端口)上創建了一個新服務器,並在建立連接時添加了一個回調函數,發送ho!發送給客戶端,並記錄其收到的消息。

查看有關Glitch的實時示例

這是一個WebSockets服務器的實時示例:https://glitch.com/edit/#!/flavio-websockets-server-example

這是一個與服務器交互的WebSockets客戶端:https://glitch.com/edit/#!/flavio-websockets-client-example

免費下載我的Node.js手冊


更多節點教程: