Refactored WebSocket so it's now handled by an actor