northnick / hydra Goto Github PK
View Code? Open in Web Editor NEWHydra is a simple, highly redundant pull-based messaging system, using CouchDb for message storage and delivery.
Hydra is a simple, highly redundant pull-based messaging system, using CouchDb for message storage and delivery.
Currently message deserialisation errors in PubSubByType and Conversations are swallowed quietly, and it would be useful to make them available to the client. They cannot be exposed by OnError on the Observable, as the semantics of Observables means it could return no further messages afterwards. Better to replace, say, Observable by Observable<Notification>, and then the event stream can contain errors intermingled with non-errors. There might be an aesthetic objection that Observable<Notification> should terminate after an error, in which case we could use our own wrapper equivalent of Notification. Seems a shame to reinvent the wheel though.
Note this is a breaking interface change, so Version 2 might be a good time to introduce it.Migration problems could be mitigated by providing an extension method on Observable<Notification> that reproduces existing behaviour by filtering out errors and returning an Observable just like the current one.
Errors when sending messages are assumed to be a Hydra server problem, and the sender marks the server as offline. Serialisation errors should be treated differently, causing an error, but not causing the server to be considered as offline.
Messages should be treatable with attachments. These would be replicated with the message, but detachable separately.
Make async versions of SaveDoc and GetAttachment. This is simple to do, but most easily written using await, which needs .NET 4.5 or the async targeting pack. Forcing 4.5 on users may not be a good thing.
The .NET StdListener uses Observable.Generate to poll repeatedly. However the Rx implementation is recursive and uses a bit more memory to store IDisposables on every poll - see https://rx.codeplex.com/discussions/431558 for discussion. This causes heap use to grow indefinitely.
Experiments suggest that replacing Observable.Generate with the Java ObservableGenerator class eliminates the leak.
The StdListener class constructor is internal, but sometimes you'd like to be able to extend the class, so make it public.
Polling uses _changes, which includes messages deleted by a clean-up process like the Hydra Scavenger Service. There can be a lot of these, so it would be better to filter them out on the server.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.