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:

Browser support

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/4.1.2/socket.io.min.js" integrity="sha384-toS6mmwu70G0fw54EGlWWeA4z3dyJ+dlXBtSURSKN4vyRFOcxd3Bzjj/AoOwY+Rg" crossorigin="anonymous"></script>

Socket.IO is also available from other CDN:

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'

© 2014–2021 Automattic
Licensed under the MIT License.
https://socket.io/docs/v4/client-installation