Restructured to use pub/sub from Redis, moved websocket from blocking to
non-blocking, improved architecture and documented