GoSocket is a library that runs on top of websockets and provides a Socket.IO-like interface for communicating with the browser or other Go programs.
GoSocket was initially developed for use within Diorite. I needed a way to quickly transfer data between the main application and the web UI, and I initially turned to websockets. Unfortunately, websockets required an extra layer of abstraction to differentiate between API locations. Websocket servers can run on only a single path each within an http server, so my idea of setting up multiple paths on the server wasn't feasible. I designed GoSockets to internalize these paths, allowing for a single websocket connection to simulate multiple endpoints.