客户端安装
版本兼容性
下面是服务端和JS客户端的兼容性表:
JS 客户端版本 | Socket.IO 服务器版本 | |||
---|---|---|---|---|
1.x | 2.x | 3.x | 4.x | |
1.x | YES | NO | NO | NO |
2.x | NO | YES | YES1 | YES1 |
3.x | NO | NO | YES | YES |
4.x | NO | NO | YES | YES |
[1] 使用 allowEIO3: true
请查看相关的迁移指南:
浏览器支持
Socket.IO 确实支持 IE9 及更高版本。不再支持 IE 6/7/8。
由于很棒的 Sauce Labs 平台,对浏览器的兼容性进行了测试:
最新版本
- 4.5.0 (2022/04/23): GitHub release / diff / npm
- 4.4.1 (2022/01/06): GitHub release / diff / npm
- 4.4.0 (2021/11/18): GitHub release / diff / npm
- 4.3.2 (2021/11/08): GitHub release / diff / npm
- 4.3.1 (2021/10/17): GitHub release / diff / npm
- 4.3.0 (2021/10/15): GitHub release / diff / npm
- 4.2.0 (2021/08/30): GitHub release / diff / npm
安装
独立构建
默认情况下,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.4/socket.io.min.js" integrity="sha384-Gr6Lu2Ajx28mzwyVR8CFkULdCU7kMlZ9UthllibdOSo6qAiN+yXNHqtgdTvFXMT4" crossorigin="anonymous"></script>
Socket.IO 也可从其他 CDN 获得:
- cdnjs: https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.7.4/socket.io.min.js
- jsDelivr: https://cdn.jsdelivr.net/npm/socket.io-client@4.7.4/dist/socket.io.min.js
- unpkg: https://unpkg.com/socket.io-client@4.7.4/dist/socket.io.min.js
有几个可用的捆绑包:
Name | Size | Description |
---|---|---|
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'
杂项
依赖树
客户端的基本安装包括 10 个软件包:
└─┬ socket.io-client@4.4.1 https://github.com/socketio/socket.io-client
├── @socket.io/component-emitter@3.0.0
├── backo2@1.0.2
├─┬ debug@4.3.3
│ └── ms@2.1.2
├─┬ engine.io-client@6.1.1
│ ├── @socket.io/component-emitter@3.0.0 deduped
│ ├── debug@4.3.3 deduped
│ ├─┬ engine.io-parser@5.0.2
│ │ └── base64-arraybuffer@1.0.1
│ ├── has-cors@1.1.0
│ ├── parseqs@0.0.6
│ ├── parseuri@0.0.6 deduped
│ ├─┬ ws@8.2.3
│ │ ├── UNMET OPTIONAL DEPENDENCY bufferutil@^4.0.1
│ │ └── UNMET OPTIONAL DEPENDENCY utf-8-validate@^5.0.2
│ ├── xmlhttprequest-ssl@2.0.0
│ └── yeast@0.1.2
├── parseuri@0.0.6
└─┬ socket.io-parser@4.1.1
├── @socket.io/component-emitter@3.0.0 deduped
└── debug@4.3.3 deduped
对应版本
The engine.io-client
软件包带来了负责管理低级连接(HTTP 长轮询或 WebSocket)的引擎。另请参阅:运作原理
socket.io-client version | engine.io-client version | ws version1 |
---|---|---|
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.4.x | 3.5.x | 7.4.x |
[1] 仅适用于 Node.js 用户。在浏览器中,使用了本机 WebSocket API。