11

2分ごとにユーザーにデータをプッシュしたいと思います。EventSourceを使用するには、接続を開いたままにするために、29秒ごとにnullバイトを追加でプッシュする必要があります。WebSocketはそのようなpingを必要としません。EventSource接続が定期的に閉じられ、再度開かれるのはなぜですか?接続がまだ開いているかどうか、またはその他の理由でチェックするためのHTTPに適切な組み込みの方法がないためですか?

4

2 に答える 2

11

Server-Sent Events (Eventsource) API は、HTTP の層になっています。WebSocket は TCP で階層化されています (ただし、HTTP 互換のハンドシェイクがあります)。HTTP と TCP の両方にアイドル タイムアウトがあることがよくありますが、TCP タイムアウトはかなり長くなる傾向があります (たとえば、2 分ではなく 2 時間)。したがって、WebSocket でキープアライブ メッセージが必要になる場合もありますが、その頻度はおそらくはるかに低くなります。また、WebSocket 標準では、ブラウザ/サーバーがこれを行うために実装できる ping/pong フレームが定義されています。

于 2012-01-06T16:51:01.777 に答える