Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
gnet
🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go./ gnet 是一个高性能、轻量级、非阻塞的事件驱动 Go 网络框架。
-
Centrifugo
Scalable real-time messaging server in a language-agnostic way. Self-hosted alternative to Pubnub, Pusher, Ably. Set up once and forever.
-
centrifuge
Real-time messaging library for Go. The simplest way to add feature-rich and scalable WebSocket support to your application. The core of Centrifugo server.
-
centrifuge-js
JavaScript client SDK to communicate with Centrifugo and Centrifuge-based server from browser, NodeJS and React Native. Supports WebSocket, HTTP-streaming over Fetch and Readable Stream API, EventSource, WebTransport and SockJS.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Honestly, what matters is (a) what you're going to be doing with those connections and (b) your hardware.
As a generalization (again, really depends what you're going to be doing), I'd expect people to get a lot further with a Go or Java based implementations. Specifically, if those connections are interacting with each other in any meaningful way, I think shared data is still too useful to pass up.
I've written a websocket server implementation in Zig(1) and Elixir(2)
(1) https://github.com/karlseguin/websocket.zig
Node is a joke. It's not good for this.
Check out https://github.com/panjf2000/gnet, it also has some links at the end.
Related posts
- Centrifugo v5 - new major release of real-time messaging server written in Go
- Centrifuge - multi-transport real-time messaging library with built-in scalability
- Gin REST APi + Websocket Help!
- Centrifuge v0.16.0 now supports unidirectional transports for real-time messaging updates such as unidirectional GRPC stream, EventSource(SSE), Fetch Readable Stream
- WebSockets vs. Server-Sent-Events vs. Long-Polling vs. WebRTC vs. WebTransport