服务器安装

必要条件

请确保Node.js已安装在您的系统上。推荐使用长期支持(LTS)版本,请参见此处.

安装 - 图1信息

至少需要 Node.js 10,不再支持旧版本。

安装

要安装最新版本:

  • NPM
  • Yarn
  • pnpm
  1. npm install socket.io
  1. yarn add socket.io
  1. pnpm add socket.io

安装特定版本:

  • NPM
  • Yarn
  • pnpm
  1. npm install socket.io@version
  1. yarn add socket.io@version
  1. pnpm add socket.io@version

最新版本

其他软件包

默认情况下,Socket.IO 使用ws包提供的 WebSocket 服务器。

有 2 个可选包可以与此包一起安装。这些软件包是改进某些操作的二进制附加组件。预构建的二进制文件可用于最流行的平台,因此您不一定需要在计算机上安装 C++ 编译器。

  • bufferutil:允许有效地执行操作,例如屏蔽和取消屏蔽 WebSocket 帧的数据负载。
  • utf-8-validate:允许有效地检查消息是否包含规范要求的有效 UTF-8。

安装这些软件包:

  • NPM
  • Yarn
  • pnpm
  1. npm install --save-optional bufferutil utf-8-validate
  1. yarn add --optional bufferutil utf-8-validate
  1. pnpm add -O bufferutil utf-8-validate

请注意,这些包是可选的,如果它们不可用,WebSocket 服务器将回退到 Javascript 实现。更多信息可以在这里找到。

其他WebSocket服务器实现

可以使用任何公开与 ws 相同的 API(特别是handleUpgrade方法)的 Websocket 服务器实现。

例如,您可以使用eiows包,它是(现已弃用的)uws包的一个分支:

  • NPM
  • Yarn
  • pnpm
  1. npm install eiows
  1. yarn add eiows
  1. pnpm add eiows

然后使用wsEngine选项:

  1. const { Server } = require("socket.io");
  2. const eiows = require("eiows");
  3. const io = new Server(3000, {
  4. wsEngine: eiows.Server
  5. });

与默认实现相比,此实现“允许但不保证”显着的性能和内存使用改进。像往常一样,请根据您自己的使用情况对其进行基准测试。

使用 µWebSockets.js

从版本4.4.0开始,Socket.IO 服务器现在可以绑定到µWebSockets.js服务器。

安装:

  • NPM
  • Yarn
  • pnpm
  1. npm install uWebSockets.js@uNetworking/uWebSockets.js#v20.4.0
  1. yarn add uWebSockets.js@uNetworking/uWebSockets.js#v20.4.0
  1. pnpm add uWebSockets.js@uNetworking/uWebSockets.js#v20.4.0

用法:

  1. const { App } = require("uWebSockets.js");
  2. const { Server } = require("socket.io");
  3. const app = new App();
  4. const io = new Server();
  5. io.attachApp(app);
  6. io.on("connection", (socket) => {
  7. // ...
  8. });
  9. app.listen(3000, (token) => {
  10. if (!token) {
  11. console.warn("port already in use");
  12. }
  13. });

杂项

依赖树

服务器的基本安装包括 23 个软件包:

  1. └─┬ socket.io@4.4.1
  2. ├─┬ accepts@1.3.7
  3. ├─┬ mime-types@2.1.34
  4. └── mime-db@1.51.0
  5. └── negotiator@0.6.2
  6. ├── base64id@2.0.0
  7. ├─┬ debug@4.3.3
  8. └── ms@2.1.2
  9. ├─┬ engine.io@6.1.1
  10. ├── @types/cookie@0.4.1
  11. ├── @types/cors@2.8.12
  12. ├── @types/node@17.0.8
  13. ├── accepts@1.3.7 deduped
  14. ├── base64id@2.0.0 deduped
  15. ├── cookie@0.4.1
  16. ├─┬ cors@2.8.5
  17. ├── object-assign@4.1.1
  18. └── vary@1.1.2
  19. ├── debug@4.3.3 deduped
  20. ├─┬ engine.io-parser@5.0.2
  21. └── base64-arraybuffer@1.0.1
  22. └─┬ ws@8.2.3
  23. ├── UNMET OPTIONAL DEPENDENCY bufferutil@^4.0.1
  24. └── UNMET OPTIONAL DEPENDENCY utf-8-validate@^5.0.2
  25. ├── socket.io-adapter@2.3.3
  26. └─┬ socket.io-parser@4.0.4
  27. ├── @types/component-emitter@1.2.11
  28. ├── component-emitter@1.3.0
  29. └── debug@4.3.3 deduped

安装 - 图2信息

包括第 3 方包的类型声明,以方便 TypeScript 用户使用该库(但代价是包稍大一些)。

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

对应版本

engine.io软件包带来了负责管理低级连接(HTTP 长轮询或 WebSocket)的引擎。另请参阅:运作原理

socket.io 版本engine.io 版本ws 版本
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.4.x3.5.x7.4.x