omnistreams-spec
editor
omnistreams-spec | editor | |
---|---|---|
2 | 1 | |
7 | 30 | |
- | - | |
0.0 | 0.0 | |
over 2 years ago | 12 months ago | |
JavaScript | ||
- | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
omnistreams-spec
-
Server-Sent Events: the alternative to WebSockets you should be using
My personal WebSockets vs SSE TL;DR goes something like this:
* If you're on HTTP/2, start with SSE
* If you need to send binary data, use WebSockets
* If you need fast bidi streaming, use WebSockets
* If you need backpressure and multiplexing for WebSockets, use RSocket or omnistreams[1] (one of my projects).
[0]: https://rsocket.io/
[1]: https://github.com/omnistreams/omnistreams-spec
-
The WebSocket Handbook
I built omnistreams[0] primarily because of the lack of backpressure in browser WebSockets (lots of background information in that README). It's what fibridge[1] is built on. We've been using it in production for over 2 years, but I never ended up trying to push omnistreams as a thing. I believe the Rust implementation is actually behind the spec a bit, and the spec itself probably needs some work.
At the end of the day I think RSocket is probably the way to go for most people, though the simplicity of omnistreams is still appealing to me.
[0]: https://github.com/omnistreams/omnistreams-spec
[1]: https://iobio.io/2019/06/12/introducing-fibridge/
editor
-
The WebSocket Handbook
I made a document editing demo here: https://github.com/fanout/editor
It uses operational transformations to manage conflicts, and it saves the data in MySQL. Technically any Django DB backend will work for storage, but the public demo instance uses MySQL.
One of the reasons I made this thing was to show that realtime apps don't need to require heavy frameworks or unusual databases. And it loads super fast.
I don't think you need Raft if you have a central database storing the document. You could also consider using CRDTs instead of OT, which may be more powerful but also more challenging to develop.
What are some alternatives?
overture - Overture is a powerful JS library for building really slick web applications, with performance at, or surpassing, native apps.
rupy - HTTP App. Server and JSON DB - Shared Parallel (Atomic) & Distributed
wstunnel - Tunnel all your traffic over Websocket or HTTP2 - Bypass firewalls/DPI - Static binary available
stable-socket - A web socket that reconnects.
dom-examples - Code examples that accompany various MDN DOM and Web API documentation pages