Binary Protocl documentation

I would like to implement an EventStore client in Nim.

Is there any documentation on the binary protocol, or do I have to comb through the source code?

Hi,

I wrote a full featured Haskell EventStore driver and I asked exactly that question a year ago.

The communication protocol isn’t publicly documented but fortunately it’s very easy to implement.

The server expects Google Protobuf messages which is described here. Basically, when a client sends

a request, it attaches a correlation id (an UUID) that server sends back when dealt with it. That’s a simplified description but not too far from reality.

I spent 99% of my time in C# client code. I think it’s good to start from there.

Hi,

Yup - pretty much it’s a full duplex async request-response flow, where the messages have some basic framing with a payload of serialised protocol buffers. We could likely do a better job of documenting it, but several people have successfully implemented client APIs, including the rather impressive Haskell version. I’d be interested to see what you come up with - feel free to ask any questions here or on Github!

Cheers,

James