a slightly more user-based version of websocket