[feature] websocket support