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-client
The 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'