Hey guys and gals! I'm learning Go at the moment and LOVING it. I was hoping to get constructive feedback on a project I'm working on - goatee - which is a notification server that utilizes Redis pub/sub and WebSockets. It's fairly bare-bones at the moment but I'm hoping to add in a lot more features as time goes on such as queueing and WebSocket channel subscriptions (via Go Socketio possibly).
Hey guys and gals! This is a project I'm undertaking to help myself learn Go - which I think is AWESOME so far. Any suggestions or criticisms would be appreciated. I hope to add more features as time goes on (and possibly swap out the generic WebSocket implementation with go-socketio).
I while ago I wrote something similar with a friend for fun. Redis, ServerSentEvents and Go: <a href="https://github.com/vivienschilis/eddy/" rel="nofollow">https://github.com/vivienschilis/eddy/</a><p>It's not so well documented but it's practically the same except that it uses ServerSentEvents on the client and has buffers so no message is ever dropped. Each messages contains the payload, a TTL and a channel size. The TTL is used to expire a channel automatically and the channel size can be used for example to create 1-deep channels for updating values like progress.
Shameless plug, but I also have a Go module named Goatee. However, it's a testing package: <a href="https://github.com/jprichardson/goatee-go" rel="nofollow">https://github.com/jprichardson/goatee-go</a> It's too bad that discoverability of modules in Go sucks.
If you're only pushing data realtime to down the client and don't need realtime <i>upload</i>, then consider Server-Sent Events (<a href="http://www.w3.org/TR/eventsource/" rel="nofollow">http://www.w3.org/TR/eventsource/</a>) as an option.<p>SSE is HTTP-compatible, so for example works on mobile networks that force port 80 to go through "transparent" WebSocket-disconnecting HTTP proxy.<p>Additionally you get Flash-free polyfills for IE7+ and automatic reconnection on error built into browsers.
What a coincidence, I see you use JSON config files: I wrote a tiny package to parse commented JSON files not long ago, maybe it would be a good fit for Goatee?<p><a href="https://github.com/sauerbraten/jsonconf" rel="nofollow">https://github.com/sauerbraten/jsonconf</a>