a simple websocket wrapper