fixed: WebSocket controller