客户端安装

版本兼容性

下面是服务端和JS客户端的兼容性表:

JS 客户端版本Socket.IO 服务器版本
1.x2.x3.x4.x
1.xYESNONONO
2.xNOYESYES1YES1
3.xNONOYESYES
4.xNONOYESYES

[1] 使用 allowEIO3: true

请查看相关的迁移指南:

浏览器支持

Socket.IO 确实支持 IE9 及更高版本。不再支持 IE 6/7/8。

由于很棒的 Sauce Labs 平台,对浏览器的兼容性进行了测试:

Browser support

最新版本

安装

独立构建

默认情况下,Socket.IO 服务器在/socket.io/socket.io.js.

io将注册为全局变量:

  1. <script src="/socket.io/socket.io.js"></script>
  2. <script>
  3. const socket = io();
  4. </script>

如果您不需要此功能(请参阅下面的其他选项),您可以禁用服务器端的功能:

  1. const { Server } = require("socket.io");
  2. const io = new Server({
  3. serveClient: false
  4. });

使用CDN

您还可以包含来自 CDN 的客户端捆绑包:

  1. <script src="https://cdn.socket.io/4.7.5/socket.io.min.js" integrity="sha384-2huaZvOR9iDzHqslqwpR87isEmrfxqyWOF7hr7BY6KG0+hVKLoEXMPUJw3ynWuhO" crossorigin="anonymous"></script>

Socket.IO 也可从其他 CDN 获得:

有几个可用的捆绑包:

NameSizeDescription
socket.io.js34.7 kB gzip未压缩版,带 debug
socket.io.min.js14.7 kB min+gzip生产版,无debug
socket.io.msgpack.min.js15.3 kB min+gzip生产版,无debug 带有 msgpack 解析器

debug允许将调试信息打印到控制台。可以在此处找到更多信息。

在开发过程中,我们建议使用socket.io.js捆绑包。通过设置localStorage.debug = 'socket.io-client:socket',客户端收到的任何事件都将打印到控制台。

对于生产,请使用socket.io.min.js捆绑包,这是一个优化的版本,不包括调试包。

使用 NPM

Socket.IO 客户端与webpackbrowserify等捆绑程序兼容。

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

客户端也可以从 Node.js 运行。

注意:由于上述原因,您可能希望从浏览器包中排除调试。使用 webpack,您可以使用webpack-remove-debug.

TypeScript 用户注意:这些类型现在包含在socket.io-client包中,因此不再需要来自@types/socket.io-client的类型,实际上可能会导致错误:

  1. Object literal may only specify known properties, and 'extraHeaders' does not exist in type 'ConnectOpts'

杂项

依赖树

客户端的基本安装包括 10 个软件包:

  1. └─┬ socket.io-client@4.4.1 https://github.com/socketio/socket.io-client
  2. ├── @socket.io/component-emitter@3.0.0
  3. ├── backo2@1.0.2
  4. ├─┬ debug@4.3.3
  5. └── ms@2.1.2
  6. ├─┬ engine.io-client@6.1.1
  7. ├── @socket.io/component-emitter@3.0.0 deduped
  8. ├── debug@4.3.3 deduped
  9. ├─┬ engine.io-parser@5.0.2
  10. └── base64-arraybuffer@1.0.1
  11. ├── has-cors@1.1.0
  12. ├── parseqs@0.0.6
  13. ├── parseuri@0.0.6 deduped
  14. ├─┬ ws@8.2.3
  15. ├── UNMET OPTIONAL DEPENDENCY bufferutil@^4.0.1
  16. └── UNMET OPTIONAL DEPENDENCY utf-8-validate@^5.0.2
  17. ├── xmlhttprequest-ssl@2.0.0
  18. └── yeast@0.1.2
  19. ├── parseuri@0.0.6
  20. └─┬ socket.io-parser@4.1.1
  21. ├── @socket.io/component-emitter@3.0.0 deduped
  22. └── debug@4.3.3 deduped

对应版本

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

socket.io-client versionengine.io-client versionws version1
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

[1] 仅适用于 Node.js 用户。在浏览器中,使用了本机 WebSocket API。