requiring websocket