Deepstream.io – Open Realtime Server
deepstream.io
deepstream.io
I might start it myself when I find some time.
Would that be a good approximation?
You really need to make the explanation clearer ^^
Your animation "built for a new generation of apps" is awesome but it doesn't not show clearly what role deepstream plays in it.
I don't think it is possible to explain everything clearly in one sentence so I wouldn't start with a tagline like that.
node is a simple, friendly technology, until you to profile it. Then it's not so friendly. With a realtime system you require a great deal of profiling and quite honestly the tooling is not there.
"Oh but what about Flamegraphs and DTrace?"... it is nothing compared to what you have in Java. And node tooling is better on obscure operating systems like IllumOS.
If I had to implement a system like this I would opt for Scala + Akka, or Elixir/Erlang. If it's for simplicity/budget reasons, try PubNub.
You can monitor Akka with kamon.io, or using the tool offered by the authors.
For eg: client.event.subscribe('channel1', eventCallback) client.event.emit('channel1', 'hello how are you?')
How scalable is that? can it support thousands of channels without any hiccups on a single medium digital ocean instance?
https://deepstream.io/info/performance/four-billion-messages...
For your chat though you need to consider whether your messages will be persistent and mutable (changeable after they've been posted) or are just one-off messages. In the first case using a list (https://deepstream.io/tutorials/core/datasync-lists/) with references to records (https://deepstream.io/tutorials/core/datasync-records/) is the way to go, in the second case pub/sub (https://deepstream.io/tutorials/core/pubsub-events/) might be better
It's very hard to correctly manage distributed state without a guarantee similar to this.
https://deepstream.io/docs/client-js/client/#connectionstate...
https://deepstream.io/docs/common/constants/#connection-stat...
Does the Deepstream client have a facility (like Firebase) to instruct the remote server to perform an action in the event the client disconnects in the future and the client is unable to get any further message to the server?
https://github.com/deepstreamIO/deepstream.io/issues/191
Also they seem to be working on 'presence'. https://github.com/deepstreamIO/deepstream.io/issues/118
edit: added socket.io part
Internally ShareDB uses Operational Transformation with special operations which are designed for use in JSON documents.
Does anyone know how this works in Deepstream?
https://deepstream.io/tutorials/core/handling-data-conflicts...
Sounds like having those merge algorithms/hooks and splitting up the document into multiple "records" might actually be enough for my use case.
[1] https://github.com/deepstreamIO/deepstream.io/issues/298
It must be a webscale realtime, or at least reactive realtime..
I'm always baffled why people choose JS over Erlang/Elixir which is designed to do this and comes with the tools/libs required to scale.
https://deepstream.io/core/getting-started-quickstart/
Edit: Clicked on tutorials and then Getting started.