slightly closer to websockets