客户端安装
最新版本目前是 4.7.5
,于 2024 年 3 月发布。
您可以在 这里 找到发行说明。
版本兼容性
以下是服务器和 JS 客户端之间的兼容性表
JS 客户端版本 | Socket.IO 服务器版本 | |||
---|---|---|---|---|
1.x | 2.x | 3.x | 4.x | |
1.x | 是 | 否 | 否 | 否 |
2.x | 否 | 是 | 是1 | 是1 |
3.x | 否 | 否 | 是 | 是 |
4.x | 否 | 否 | 是 | 是 |
[1]是,使用 allowEIO3: true
请查看相关的迁移指南
浏览器支持
Socket.IO 支持 IE9 及更高版本。IE 6/7/8 不再支持。
浏览器兼容性通过出色的 Sauce Labs 平台进行测试
安装
独立构建
默认情况下,Socket.IO 服务器在 /socket.io/socket.io.js
处公开客户端包。
io
将注册为全局变量
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
</script>
如果您不需要此功能(请参阅下面的其他选项),您可以在服务器端禁用此功能
const { Server } = require("socket.io");
const io = new Server({
serveClient: false
});
从 CDN
您也可以从 CDN 包含客户端包
<script src="https://cdn.socket.io/4.7.5/socket.io.min.js" integrity="sha384-2huaZvOR9iDzHqslqwpR87isEmrfxqyWOF7hr7BY6KG0+hVKLoEXMPUJw3ynWuhO" crossorigin="anonymous"></script>
Socket.IO 也可从其他 CDN 获取
- cdnjs: https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.7.5/socket.io.min.js
- jsDelivr: https://cdn.jsdelivr.net.cn/npm/socket.io-client@4.7.5/dist/socket.io.min.js
- unpkg: https://unpkg.com/socket.io-client@4.7.5/dist/socket.io.min.js
有几个可用的包
名称 | 大小 | 描述 |
---|---|---|
socket.io.js | 34.7 kB gzip | 未压缩版本,使用 debug |
socket.io.min.js | 14.7 kB min+gzip | 生产版本,不使用 debug |
socket.io.msgpack.min.js | 15.3 kB min+gzip | 生产版本,不使用 debug 并且使用 msgpack 解析器 |
debug 包允许将调试信息打印到控制台。您可以在 这里 找到更多信息。
在开发过程中,我们建议使用 socket.io.js
包。通过设置 localStorage.debug = 'socket.io-client:socket'
,客户端接收到的任何事件都将打印到控制台。
对于生产环境,请使用 socket.io.min.js
包,它是一个优化的构建,不包含调试包。
从 NPM
Socket.IO 客户端与 webpack 或 browserify 等打包器兼容。
- NPM
- Yarn
- pnpm
npm install socket.io-client
yarn add socket.io-client
pnpm add socket.io-client
客户端也可以从 Node.js 运行。
注意:由于上述原因,您可能希望从浏览器包中排除调试。使用 webpack,您可以使用 webpack-remove-debug。
注意:对于 TypeScript 用户:类型现在包含在 socket.io-client
包中,因此不再需要 @types/socket.io-client
中的类型,实际上可能会导致错误
Object literal may only specify known properties, and 'extraHeaders' does not exist in type 'ConnectOpts'
杂项
依赖树
客户端的基本安装包括 9 个包,其中 5 个由我们团队维护
└─┬ socket.io-client@4.7.2
├── @socket.io/component-emitter@3.1.0
├─┬ debug@4.3.4
│ └── ms@2.1.2
├─┬ engine.io-client@6.5.2
│ ├── @socket.io/component-emitter@3.1.0 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
│ └── xmlhttprequest-ssl@2.0.0
└─┬ socket.io-parser@4.2.4
├── @socket.io/component-emitter@3.1.0 deduped
└── debug@4.3.4 deduped
传递版本
engine.io-client
包带来了负责管理低级连接(HTTP 长轮询或 WebSocket)的引擎。另请参阅:工作原理
socket.io-client 版本 | engine.io-client 版本 | ws 版本1 |
---|---|---|
4.7.x | 6.5.x | 8.11.x |
4.6.x | 6.4.x | 8.11.x |
4.5.x | 6.2.x | 8.2.x |
4.4.x | 6.1.x | 8.2.x |
4.3.x | 6.0.x | 8.2.x |
4.2.x | 5.2.x | 7.4.x |
4.1.x | 5.1.x | 7.4.x |
4.0.x | 5.0.x | 7.4.x |
3.1.x | 4.1.x | 7.4.x |
3.0.x | 4.0.x | 7.4.x |
2.5.x | 3.6.x | 7.4.x |
2.4.x | 3.5.x | 7.4.x |
[1]仅适用于 Node.js 用户。在浏览器中,使用原生 WebSocket API。