跳至主要內容
版本:4.x

伺服器安裝

資訊

最新版本目前為 4.7.5,於 2024 年 3 月發布。

您可以在 此處 找到版本說明。

先決條件

請確定您的系統已安裝 Node.js。目前長期支援 (LTS) 版本是理想的起點,請參閱 此處

資訊

至少需要 Node.js 10,不再支援舊版本。

安裝

安裝最新版本

npm install socket.io

安裝特定版本

npm install socket.io@version

其他套件

預設情況下,Socket.IO 使用 ws 套件提供的 WebSocket 伺服器。

有 2 個可選套件可以與此套件一起安裝。這些套件是二進位元附加元件,可改善特定操作。預先建置的二進位元檔可供最熱門的平台使用,因此您不一定需要在您的機器上安裝 C++ 編譯器。

  • bufferutil:允許有效率地執行操作,例如遮罩和取消遮罩 WebSocket 框架的資料負載。
  • utf-8-validate:允許有效率地檢查訊息是否包含規格所要求的有效 UTF-8。

安裝這些套件

npm install --save-optional bufferutil utf-8-validate

請注意,這些套件是可選的,如果 WebSocket 伺服器無法使用,它將回退到 Javascript 實作。更多資訊可在此處找到 此處

其他 WebSocket 伺服器實作

可以使用的任何 WebSocket 伺服器實作都公開與 ws 相同的 API(特別是 handleUpgrade 方法)。

例如,您可以使用 eiows 套件,它是(現在已棄用的)uws 套件的分支

npm install eiows

然後使用 wsEngine 選項

const { Server } = require("socket.io");
const eiows = require("eiows");

const io = new Server(3000, {
wsEngine: eiows.Server
});

此實作「允許,但不保證」在預設實作上顯著提升效能和記憶體使用量。一如往常,請針對您自己的使用情況進行基準測試。

搭配 µWebSockets.js 使用

從版本 4.4.0 開始,Socket.IO 伺服器現在可以繫結到 µWebSockets.js 伺服器。

安裝

npm install uWebSockets.js@uNetworking/uWebSockets.js#v20.4.0

使用方式

const { App } = require("uWebSockets.js");
const { Server } = require("socket.io");

const app = App();
const io = new Server();

io.attachApp(app);

io.on("connection", (socket) => {
// ...
});

app.listen(3000, (token) => {
if (!token) {
console.warn("port already in use");
}
});

其他

相依性樹

伺服器的基本安裝包括 21 個套件,其中 6 個由我們的團隊維護

└─┬ socket.io@4.7.2
├─┬ accepts@1.3.8
│ ├─┬ mime-types@2.1.35
│ │ └── mime-db@1.52.0
│ └── negotiator@0.6.3
├── base64id@2.0.0
├─┬ cors@2.8.5
│ ├── object-assign@4.1.1
│ └── vary@1.1.2
├─┬ debug@4.3.4
│ └── ms@2.1.2
├─┬ engine.io@6.5.2
│ ├── @types/cookie@0.4.1
│ ├─┬ @types/cors@2.8.13
│ │ └── @types/node@20.4.6 deduped
│ ├── @types/node@20.4.6
│ ├── accepts@1.3.8 deduped
│ ├── base64id@2.0.0 deduped
│ ├── cookie@0.4.2
│ ├── cors@2.8.5 deduped
│ ├── debug@4.3.4 deduped
│ ├── engine.io-parser@5.2.1
│ └─┬ ws@8.11.0
│ ├── UNMET OPTIONAL DEPENDENCY bufferutil@^4.0.1
│ └── UNMET OPTIONAL DEPENDENCY utf-8-validate@^5.0.2
├─┬ socket.io-adapter@2.5.2
│ └── ws@8.11.0 deduped
└─┬ socket.io-parser@4.2.4
├── @socket.io/component-emitter@3.1.0
└── debug@4.3.4 deduped
資訊

包含第三方套件的類型宣告,以簡化 TypeScript 使用者使用程式庫(但會使套件略大)。

另請參閱:https://github.com/microsoft/types-publisher/issues/81#issuecomment-234051345

傳遞版本

engine.io 套件提供負責管理低階連線(HTTP 長輪詢或 WebSocket)的引擎。另請參閱:運作方式

socket.io 版本engine.io 版本ws 版本
4.7.x6.5.x8.11.x
4.6.x6.4.x8.11.x
4.5.x6.2.x8.2.x
4.4.x6.1.x8.2.x
4.3.x6.0.x8.2.x
4.2.x5.2.x7.4.x
4.1.x5.1.x7.4.x
4.0.x5.0.x7.4.x
3.1.x4.1.x7.4.x
3.0.x4.0.x7.4.x
2.5.x3.6.x7.4.x
2.4.x3.5.x7.4.x