The connection begins with an HTTP-based handshake and then switches to framed messages over one transport connection. Either side can send data without creating a new request for every update. Heartbeats, reconnection, authentication, and backpressure require application logic.