Our great sponsors
-
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.
-
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.
Oh, thanks! And sorry for still not switching to https://github.com/gobwas/ws :)
Thanks! BTW, Centrifugo's core is based on https://github.com/centrifugal/centrifuge Go library - which theoretically can be more flexible and extensible solution for Go developers than Centrifugo server since server dictates some auth/permission/channel/api rules.
I actually was thinking about this when I saw https://github.com/dunglas/mercure project to become a Caddy plugin. But I did not find enough reasoning to try this with Centrifugo at that point, and still... Seems awesome from one side - tight integration with a web-server, no extra network between LB and Centrifugo. But will this be useful in practice and find its users? 🤔 That's the question I don't have an answer yet.
Centrifugo can use Nats as PUB/SUB broker. I also tried to use Jetstream to implement Centrifugo history/recovery semantics – unfortunately Jetstream does not fit us very well as streams must be created over a separate call to admin API, and it's not possible to iterate/paginate over Jetstream streams to be suitable to current Centrifugo message history and recovery semantics (I asked about support for this – unfortunately the issue was closed and required API not implemented - https://github.com/nats-io/jetstream/issues/266, suggested solution is far from optimal for our use case).