跳至主要内容
版本: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 服务器实现

任何与 ws 具有相同 API 的 Websocket 服务器实现(特别是 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