API docs
Please check the clients and API docs for reference
Warning: Use client versions compatible with Socket.IO Server v4. Previous versions may not be supported and may not work correctly
JavaScript (browser, Node.js or React Native)
- Installation steps - API - Source code
JavaScript (for WeChat Mini-Programs)
Not all client-side APIs may be available in the server implementation, and vice versa.
Compatibility Matrix
Connect
✅ Yes
io(url, opts)
IO.socket(url)
sio.connect(url)
socket.connect()
socket.connect()
socket.connect()
socket.Connect()
client->Connect()
socket.Connect()
Standard connect method
Disconnect
✅ Yes
socket.disconnect()
socket.disconnect()
sio.disconnect()
socket.disconnect()
socket.disconnect()
socket.disconnect()
socket.Disconnect()
client->Disconnect()
socket.Disconnect()
Client disconnects from server
Event listen
✅ Yes
socket.on(event, cb)
socket.on(EVENT, listener)
@sio.on(event)
socket.on(event, cb)
socket.on(event, cb)
socket.on(event, cb)
socket.On(event, cb)
client->On(event, cb)
socket.On(event, cb)
Standard event handler
One‑time listener
✅ Yes
socket.once(event, cb)
socket.once(EVENT, listener)
@sio.once(event)
socket.once(event, cb)
socket.once(event, cb)
socket.once(event, cb)
socket.Once(event, cb)
client->Once(event, cb)
socket.Once(event, cb)
Some clients don’t have built‑in once
Remove listener
✅ Yes
socket.off() / socket.removeListener()
socket.off(EVENT)
sio.off(event)
socket.off(event)
socket.off(event)
socket.off(event)
socket.Off(event)
client->Off(event)
socket.Off(event)
Most clients support listener removal cycles
Emit event
✅ Yes
socket.emit(event, …args)
socket.emit(event, …args)
sio.emit(event, data)
socket.emit(event, data)
socket.emit(event, data)
socket.emit(event, data)
socket.Emit(event, data)
client->Emit(event, data)
socket.Emit(event, data)
Standard emit
Emit with ack
✅ Yes
socket.emit(event, …, callback) / emitWithAck()
socket.emit(event, …args, AckCallback)
sio.call(event, data) / await sio.emit(event, data, callback)
socket.emit(event, data, cb)
socket.emit(event, data, cb)
socket.emit(event, data, cb)
socket.Emit(event, data, cb)
client->Emit(event, data, cb)
socket.Emit(event, data, cb)
Ack support varies
Namespace API
✅ Yes
io(url/ns) / socket.nsp
socket.of("/ns")
sio.connect(url, namespaces=["/ns"])
socket.of("/ns")
socket.of("/ns")
socket.of("/ns")
socket.Of("/ns")
client->Of("/ns")
socket.Of("/ns")
Most multi‑namespace clients support
Query / Auth
⚠️ Limited
io(url, { auth, query })
IO.Options.query/setAuth(Map<String,Object>)
sio.connect(url, auth={…})
socket.setAuth(data)
socket.setAuth(data)
socket.setAuth(data)
socket.SetAuth(data)
client->SetAuth(data)
socket.SetAuth(data)
Handshake params pass through
Reconnection control
⚠️ Partial
Managed by client options
socket.io().reconnection(true/false)
sio.reconnect() or handled by sio.connect()
Client library dependent
Client library dependent
Client library dependent
Client library dependent
Client library dependent
Client library dependent
Auto reconnect logic client
Volatile emit
⚠️ Limited
socket.volatile.emit()
JS-only / no standard in Java client
⚠️ Rare / not standard
Varies
Varies
Varies
Varies
Varies
Varies
Not consistently implemented
Compression flags
⚠️ Internal
socket.compress()
Not standard
Not standard
Not standard
Varies
Varies
Varies
Varies
Varies
Usually internal
Client middleware (use())
❌ No
JS only
❌
❌
❌
❌
❌
❌
❌
❌
Middleware API largely JS only
Engine/Manager internals
❌ No
socket.io / Manager
Internal
Internal
Internal
Internal
Internal
Internal
Internal
Internal
Client internals not mirrored on server
Last updated
Was this helpful?