Client Installation
Version compatibility#
Here is the compatibility table between the server and the JS client:
| JS Client version | Socket.IO server version | |||
|---|---|---|---|---|
| 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] Yes, with allowEIO3: true
Please check the associated migration guides:
Browser support#
Socket.IO does support IE9 and above. IE 6/7/8 are not supported anymore.
Browser compatibility is tested thanks to the awesome Sauce Labs platform:
Release notes#
The release notes of each version can be found in GitHub.
Installation#
Standalone build#
By default, the Socket.IO server exposes a client bundle at /socket.io/socket.io.js.
io will be registered as a global variable:
<script src="/socket.io/socket.io.js"></script><script> const socket = io();</script>If you don't need this (see other options below), you can disable the functionality on the server side:
const io = require("socket.io")({ serveClient: false});From a CDN#
You can also include the client bundle from a CDN:
<script src="https://cdn.socket.io/3.1.3/socket.io.min.js" integrity="sha384-cPwlPLvBTa3sKAgddT6krw0cJat7egBga3DJepJyrLl4Q9/5WLra3rrnMcyTyOnh" crossorigin="anonymous"></script>Socket.IO is also available from other CDN:
- cdnjs: https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.1.3/socket.io.min.js
- jsDelivr: https://cdn.jsdelivr.net/npm/socket.io-client@3.1.3/dist/socket.io.min.js
- unpkg: https://unpkg.com/socket.io-client@3.1.3/dist/socket.io.min.js
There are several bundles available:
| Name | Size | Description |
|---|---|---|
| socket.io.js | 34.7 kB gzip | Unminified version, with debug |
| socket.io.min.js | 14.7 kB min+gzip | Production version, without debug |
| socket.io.msgpack.min.js | 15.3 kB min+gzip | Production version, without debug and with the msgpack parser |
The debug package allows to print debug information to the console. You can find more information here.
During development, we recommend using the socket.io.js bundle. By setting localStorage.debug = 'socket.io-client:socket', any event received by the client will be printed to the console.
For production, please use the socket.io.min.js bundle, which is an optimized build excluding the debug package.
From NPM#
The Socket.IO client is compatible with bundlers like webpack or browserify.
$ npm install socket.io-clientThe client can also be run from Node.js.
Note: for the reasons cited above, you may want to exclude debug from your browser bundle. With webpack, you can use webpack-remove-debug.
Note for TypeScript users: the types are now included in the socket.io-client package and thus the types from @types/socket.io-client are not needed anymore and may in fact cause errors:
Object literal may only specify known properties, and 'extraHeaders' does not exist in type 'ConnectOpts'