Client Initialization
Once you have installed the Socket.IO client library, you can now init the client. The complete list of options can be found here.
In the examples below, the io
object comes either from:
- the
<script>
import
<script src="/socket.io/socket.io.js"></script>
- NPM
// ES6 importimport io from 'socket.io-client';// CommonJSconst io = require('socket.io-client');
#
From the same domainIf your front is served on the same domain as your server, you can simply use:
const socket = io();
The server URL will be deduced from the window.location object.
Additional options can be passed:
// default valuesconst socket = io({ path: '/socket.io', reconnection: true, reconnectionAttempts: Infinity, reconnectionDelay: 1000, reconnectionDelayMax: 5000, randomizationFactor: 0.5, timeout: 20000, autoConnect: true, query: {}, // options of the Engine.IO client upgrade: true, forceJSONP: false, jsonp: true, forceBase64: false, enablesXDR: false, timestampRequests: true, timestampParam: 't', policyPort: 843, transports: ['polling', 'websocket'], transportOptions: {}, rememberUpgrade: false, onlyBinaryUpgrades: false, requestTimeout: 0, protocols: [], // options for Node.js agent: false, pfx: null, key: null, passphrase: null, cert: null, ca: null, ciphers: [], rejectUnauthorized: true, perMessageDeflate: true, forceNode: false, localAddress: null, // options for Node.js / React Native extraHeaders: {},});
#
From a different domainIn case your front is not served from the same domain as your server, you have to pass the URL of your server.
const socket = io('https://server-domain.com');
#
Custom namespaceIn the examples above, the client will connect to the default namespace. Using only the default namespace should be sufficient for most use cases, but you can specify the namespace with:
// same origin versionconst socket = io('/admin');// cross origin versionconst socket = io('https://server-domain.com/admin');
You can find more details about namespaces here.
#
Notable optionstransports
option#
By default, the client will try to establish a WebSocket connection, and fall back to XHR/JSONP polling.
If you are sure the WebSocket connection will succeed, you can disable the polling transport:
const socket = io({ transports: ['websocket']});
In that case, due to the nature of the WebSocket connection, you can have several server instances without sticky sessions. More information here.