Websockets Server with Fault-Tolerance and Durable Message Store

durabilityfailoversocket

I am starting to experiment with websockets.

Does anyone know of a websockets server (open source or paid) that provides a durable store of the websocket "channel"? All of the examples that I have found do not address durability — if a websockets server goes down, all "channel" data is lost.

Services such as Pusher do not really discuss whether they address the durability issue (and I have not received a response from tech support yet).

Happy to roll my own, but would rather not reinvent the wheel.

EDIT:

I'm not looking for websockets 101 information. That is readily available and understood.

I'm looking for a server (open source or paid) that supports websockets and has a durable store for the websocket data so that, in the event that a server fails, a new server can take over where the original one left off.

Two main purposes:

  1. support failover scenarios contemplated by the websockets Network Working Group https://datatracker.ietf.org/doc/html/draft-ibc-websocket-dns-srv-02#section-5.1 (most importantly so that missed messages are sent when a client connects to a failover server)
  2. support scenarios where new subscribers must receive all past messages that were published.

Of course this can be handled at the application layer…but that is not what I am looking for.

EDIT

So, after some research the following installed options seem to be the most robust:

Hosted services that seem "real"

  • Pusher (great API but no history feature yet)
  • PubNub (has history)

All of the above services have graceful fallback to other communication methods if websockets are not available.

I was not able to find any open source that provided "out of the box" clustering, fail-over, and a durable message store to play back history. There are some projects that may serve as good starting points, but not exactly what I am looking for.

Best Answer

Hornetq is a general message broker that supports JMS, STOMP and Websockets+Stomp. It provides durability of messages along with a host of other features.