[ANN] Node.js client (ges-client)

Hi All,

I’ve started work on a Node.js client, which can be found at https://github.com/bmavity/ges-client . I am gradually implementing all the current ClientAPI tests in JavaScript to ensure feature compatibility. Current status of some of the major features:

  • Connection (Partial - not all events are available)
  • Append to stream (Partial - except for transactions/deleted)
  • Read from stream (Partial - forward reads only)
  • Subscriptions (Partial - live subscription to stream only)
  • Read from all (Not Started)
  • Stream ACLs (Not Started)
  • Transations (Not Started)
  • Stream deletes (Not Started)
  • Stream metadata (Not Started)

The work so far is mainly on the tcp transport, but there is also some (really rough) code for http.

Finally, @kenpratt I learned a lot from looking at your previous version, so thanks a bunch for that.

Nice will take a look tonight

If anyone is interested, here is the current progress. I am dealing with some test failures because deserializing the ResolvedEvent and ResolvedIndexedEvent messages causes an exception due the required event field being returned as null. I am not sure what the expected behavior is here, so perhaps I just need to find a new protobuf module. I am also dealing with some intermittent test failures when reading from the $all stream because system events are getting inserted into the stream.

I am not planning on getting retries and reconnections working for the next publish to npm, but that should be fine for testing or sample projects.

  • Connection (Partial - not all events are available)
  • Append to stream (Partial - except for transactions)
  • Read from stream (Complete)
  • Subscriptions (Partial - live subscription to stream only)
  • Read from all (Partial - except for linktos)
  • Stream ACLs (Partial - can be set with metadata, but tests not migrated)
  • Transations (Not Started)
  • Stream deletes (Complete)
  • Stream metadata (Complete)

You should be aware of the competing branch there are some different messages added there.

" I am also dealing with some intermittent test failures when reading from the $all stream because system events are getting inserted into the stream."

Yes system events can be there. You can work around by knowing they start with $

Thanks for the heads up on the branch. Will check it out.

I filter the system events, but sometimes there are too many and cause all the normal events to not appear. I was trying to strictly follow the c# tests, but from your response, can I assume that it is safe to just increase the count on the reads?