24 ms·
Deepstream.io – Open Realtime Server
- 120bits 10y agoPage Not Found. When I clicked on Getting started https://deepstream.io/core/getting-started-quickstart/ https://deepstream.io/core/getting-started-quickstart/ Edit: Clicked on tutorials and then Getting started.
- wolframhempel 10y agooops, thanks so much, fixed it
- MasterScrat 10y agoFrom a quick look at it it looks like a self-hosted Firebase. Would that be a good approximation?
- wolframhempel 10y agoyup, that's not too far off. It also gives you Pub/Sub and Request/Response though. Also Firebase uses one huge data-structure for data-sync whereas deepstream breaks data down into smaller objects called "records" with individual lifecycles
- duncanawoods 10y agoHuh. I visited your site and reading the tag line "a fast, secure and scalable websocket & tcp server", I assumed it was just a socket server and had no idea it was actually a data-store.
- MasterScrat 10y agoYeah I mostly understood that from the example. You really need to make the explanation clearer ^^
- wolframhempel 10y agoVery much agree. Would you have any recommendation?
- MasterScrat 10y agoI would show what it does step by step: one box with data-sync, one with real-time data sharing, etc... with an animation for each. 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.
- rambos 10y ago+1 something like this is defintley needed
- benjaminjt 10y agoI know the question wasn't directed to me, but the animation on the 'Cluster Messaging'[1] page really helped me understand. [1] https://deepstream.io/tutorials/core/cluster-messaging/ https://deepstream.io/tutorials/core/cluster-messaging/
- lpinca 10y agoI'm confused. 1.1 has been released 13 days ago https://github.com/deepstreamIO/deepstream.io/releases/tag/v1.1.0 https://github.com/deepstreamIO/deepstream.io/releases/tag/v...
- wolframhempel 10y agoyes, but we wanted to give it an initial test phase before announcing it to make sure we didn't miss anything major
- andrewwhartion 10y agoIsn't that what a release candidate is for?
- lpinca 10y agoI'm still confused. You are announcing 1.0 but the actual version is 1.1
- stemuk 10y agoAre there any plans for an iOS/Swift client? So far it seems only js and Java clients are available...
- wolframhempel 10y agoYup, we're in the process of finalizing it. There's a related issue at https://github.com/deepstreamIO/deepstream.io/issues/68 https://github.com/deepstreamIO/deepstream.io/issues/68 with links to the beta artefacts.
- stemuk 10y agoNice, really appreciate the progress here! However, is there any reason the artifacts aren't on github? It may be more convenient when it comes to issues/changelogs etc.
- wolframhempel 10y agoagreed, they will be soon. At the moment the core is cross-compiled from the Java-Client using j2obc, hence the underlying repo is the java one. We are in the process of evaluating how well this worked.
- stemuk 10y ago:D I am actually trying to do something similar with the js client. I recently tried to convert it to Dart using jsparser, since i am working with http://flutter.io http://flutter.io, a hybrid app development project from Google. It worked out just fine for now, currently testing it to get the weak spots fixed.
- aw3c2 10y agoCan't read the text, please review the contrast part of https://www.w3.org/TR/WCAG20/ https://www.w3.org/TR/WCAG20/
- stemuk 10y agoThis might help you out for now (if you are using Firefox): https://support.mozilla.org/en-US/kb/accessibility-features-firefox-make-firefox-and-we https://support.mozilla.org/en-US/kb/accessibility-features-...
- asadlionpk 10y agoThis is great! I wish somebody would write a Firebase API compatible wrapper around this so escaping Firebase lock-in would be possible without altering code. I might start it myself when I find some time.
- cheriot 10y agoOr even just integration testing Firebase without hitting a remote service!
- asadlionpk 10y agothat might be overkill. Here is a better solution: https://github.com/urish/firebase-server https://github.com/urish/firebase-server
- cheriot 10y agoI looked into it. firebase-server doesn't work with recent firebase clients and it's not a priority for the author.
- dschiptsov 10y agoRealtime? In nodejs? It must be a webscale realtime, or at least reactive realtime..
- hackerboos 10y agoIf you're willing to put the work in to load balance then it can probably scale quite well. 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.
- elcct 10y agoExactly word "probably" is a deal breaker in this case. I am also curious how someone was thinking JS will be a good idea for such project. But hey, there are people building cars out of plastic bottles...
- wolframhempel 10y agoWe are working with Alex,creator of µWebSockets (https://github.com/uWebSockets/uWebSockets https://github.com/uWebSockets/uWebSockets) on moving all connectivity and networking aspects to low level C
- stemuk 10y agoWould this mean you are getting rid of engine.io as the base, or is this just meant to be a general addition?
- wolframhempel 10y agoyes, that's one major aspect of it. engine.io adds is own protocol and isn't exactly the most performance tuned library
- stemuk 10y agoIs there some data available on which factor the perfomance benefitted from this change (like some benchmark results)?
- akanet 10y agoDo you provide a version of Firebase's onDisconnect? https://firebase.google.com/docs/reference/js/firebase.database.OnDisconnect https://firebase.google.com/docs/reference/js/firebase.datab... It's very hard to correctly manage distributed state without a guarantee similar to this.
- wolframhempel 10y agoYes, there are granular connection states and associated events. Messages are queued during connection loss. Please find more information here. https://deepstream.io/docs/client-js/client/#connectionstatechanged https://deepstream.io/docs/client-js/client/#connectionstate... https://deepstream.io/docs/common/constants/#connection-state https://deepstream.io/docs/common/constants/#connection-stat...
- akanet 10y agoSorry, I should have been clearer. I don't mean "does Deepstream tell the user when it's disconnected", I mean: 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?
- wolframhempel 10y agoehm...this is not Horizon. But its a good question none the less. No, it does currently not have that facility, but it would certainly be a good addition
- akanet 10y agoHah, sorry, too many tabs open lately. I'll edit. Thanks for the answer.
- asadlionpk 10y agoSince this is not built-in, it may be possible to make with deepstream's onClientDisconnect. https://github.com/deepstreamIO/deepstream.io/issues/191 https://github.com/deepstreamIO/deepstream.io/issues/191 Also they seem to be working on 'presence'. https://github.com/deepstreamIO/deepstream.io/issues/118 https://github.com/deepstreamIO/deepstream.io/issues/118
- kabes 10y agoI really like that the documentation is quite honest and unbiased. Like with the integrations: https://deepstream.io/tutorials/integrations https://deepstream.io/tutorials/integrations it always mentions downsides next to the upsides.
- benjaminjt 10y agoThis is a really good point actually. I particularly liked the overview of other realtime libraries[1] for the honesty factor, and it really helped me understand how it relates to more familiar frameworks too. [1] https://deepstream.io/blog/realtime-framework-overview/ https://deepstream.io/blog/realtime-framework-overview/
- oakesm9 10y agoHow does this compare to something like ShareDB (https://github.com/share/sharedb https://github.com/share/sharedb)? It seems on the face of it that the data part of it is pretty similar (albeit Deepstream is more fully featured with auth etc.), however, there is no mention of how Deepstream handles conflict resolution if two clients are modifying the state. Internally ShareDB uses Operational Transformation with special operations which are designed for use in JSON documents. Does anyone know how this works in Deepstream?
- wolframhempel 10y agoThere's a choice of merge algorithms as well as the ability to hook in your own. https://deepstream.io/tutorials/core/handling-data-conflicts/ https://deepstream.io/tutorials/core/handling-data-conflicts...
- oakesm9 10y agoThanks! I hadn't found that before. Sounds like having those merge algorithms/hooks and splitting up the document into multiple "records" might actually be enough for my use case.
- reactor 10y agoGenuine question, how does this different from https://github.com/centrifugal/centrifugo https://github.com/centrifugal/centrifugo ?
- wolframhempel 10y agoI'm afraid I don't know too much about centrifugo, but it looks like a pub-sub server you can connect to Redis. deepstream on the other hand provides datasync (stateful, persistent JSON objects you can subscribe and listen to), request-response and pubsub in a scalable way with granular permissions and authentication strategies and an ecosystem of connectors that make it work with different databases, caches and message buses.
- reactor 10y agoThanks, any plan for the android client?
- wolframhempel 10y agosorry, not quite following. There is an android client here: https://deepstream.io/install/android/ https://deepstream.io/install/android/
- reactor 10y agoAh sorry, didn't notice.
- reactor 10y agoLooks quite interesting, I was evaluating few real-time frameworks (esp socket.io) for the past couple of days . Could you pls shed some lights on how easy to use deepstream to setup a one-to-one in-app chat/messaging setup for android? I guess its the event's are the way to go. 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?
- phelm 10y agoHow does this compare to RethinkDB / Horizon ?
- wolframhempel 10y agoPlease find a detailed answer here: https://deepstream.io/tutorials/integrations/db-rethinkdb/ https://deepstream.io/tutorials/integrations/db-rethinkdb/
- marknadal 10y agoWow, deepstream looks really good (and I'm a competitor, http://gun.js.org/ http://gun.js.org/ ). Your guy's product seems to have significantly matured over the last year. I'm very impressed! Up for chatting? mark AT gunDB DOT io (I still like your guys old website better though with the server/client graphic animation).
- wolframhempel 10y agoOoh, thanks so much. Just heading out for the inevitable "we've made the frontpage drink", but let's get in touch tomorrow. The diagram is still there, but buried in https://deepstream.io/tutorials/core/cluster-messaging/ https://deepstream.io/tutorials/core/cluster-messaging/
- marknadal 10y agoYeah that one! I love that graphic! Your profile doesn't have your email address in it, so you'll have to ping me. Tomorrow sounds good. Congrats on the launch!
- makkesk8 10y agoI like it but coming from socket.io I have a hard time with it. For instance, Where/how would I put my server logic? The "Node API" as its called isn't really helpful or not documented enough. But then again, I could have misunderstood what deepstream is all about or how you are supposed to be using it.
- wolframhempel 10y agoIt's a different beast from socket.io :-) your server logic is just another client, written in java or node. There's a lot of functionality that let's you listen in on what clients request etc. Please find more details at https://deepstream.io/tutorials/core/active-data-providers/ https://deepstream.io/tutorials/core/active-data-providers/
- partycoder 10y agoWhile it looks interesting, I honestly don't feel like building a system like this on top of node. Not because of the library itself, which seems properly implemented (hard to see libraries using proper formatting and JSDoc these days). 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.
- dragonne 10y agoWhat tools do you use to profile a Scala + Akka service? IME they are quite opaque to traditional Java tools like VisualVM. What am I missing?
- partycoder 10y agoScala can be profiled with VisualVM. You can monitor Akka with kamon.io, or using the tool offered by the authors.
- samblr 10y agoCould you please shed some light on concurrent connections benchmarks ? Im looking for a scalable solution - I am trying out socket.io and I read from others there are some performance issues as it scales. edit: added socket.io part
- pubnub 10y agoI love NodeJS. So many NPM's to be had. I want to open source our ANSI-C Realtime Server - maybe someday. Our https://www.pubnub.com/blocks-catalog/ https://www.pubnub.com/blocks-catalog/ BLOCKS engine actually starting in Java. That was a M-I-S-T-A-K-E-E-E-E. It's better now.
- firdaus 10y agoCan you state your stance on AGPL[1] on the website like MongoDB and RethinkDB do to put people's minds at ease. [1] https://github.com/deepstreamIO/deepstream.io/issues/298 https://github.com/deepstreamIO/deepstream.io/issues/298