A Socket.IO server for Go with namespaces, rooms, acknowledgements,
broadcast and a Redis adapter for multi-instance deployments. Engine.IO is included as
the engineio sub-package and can be used on its own.
This is a maintained fork of googollee/go-socket.io.
| Server | Socket.IO protocol | Engine.IO protocol | JavaScript client |
|---|---|---|---|
| v1 (this module, repository root) | v4 | v3 | socket.io-client 1.x and 2.x |
v2 (in development in v2/, no runtime yet) |
v5 | v4 | socket.io-client 3.x and 4.x |
The v1 interoperability checks use socket.io-client 1.7.4 and 2.5.0;
the reference server is Socket.IO 2.5.0 with Engine.IO 3.6.2.
V1 protocol details and deviations: docs/PROTOCOL.md.
Install the maintained fork directly:
go get github.com/sshaplygin/go-socket.io@v1.5.0Go 1.22 or later is required.
Runnable applications and launch instructions are in _examples/. Start with the net/http server or the Go client. The directory also includes ACKs, binary events, namespaces, middleware, framework integrations, Redis and graceful shutdown.
The Go client is available in
github.com/sshaplygin/go-socket.io/client;
server and client use separate connection types and constructors.
Configuration, namespace lifecycle, adapters and typed events: V1 usage. API reference: pkg.go.dev.
See CONTRIBUTING.md for the PR process and CLAUDE.md for how to build and test.
BSD 3-Clause, see LICENSE.