API docs

Please check the clients and API docs for reference

Compatibility Matrix

Client API
Netty‑SocketIO Support
JavaScript Client
Java Client
Python Client
C++ Client
Swift Client
Dart/Flutter Client
.NET Client
PHP Client
Go Client
Notes

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?