2012-01-06 7 views
5

2分ごとにユーザーにデータをプッシュしたいと思います。 EventSourceを使用するには、接続を開いたままにするために、29秒ごとにnull-byteをさらにプッシュする必要があります。 WebSocketはこのようなpingを必要としません。 EventSource接続が定期的に閉じられて再開されるのはなぜですか?接続がまだ開いているかどうかを確認するためのHTTPには、組み込みの方法がないためですか?WebSocketの1つが開かれている間、データが転送されない場合、30秒〜60秒ごとにEventSource接続が閉じられるのはなぜですか?

答えて

7

サーバー送信イベント(Eventsource)APIはHTTP上にレイヤードされています。 WebSocketはTCP上に階層化されています(ただしHTTP互換のハンドシェイクがあります)。 HTTPとTCPの両方がアイドルタイムアウトを有することが多いが、TCPタイムアウトはずっと長くなる傾向がある(例えば、2分ではなく2時間)。したがって、WebSocketにキープアライブメッセージが必要な場合もありますが、それほど頻繁ではありません。また、WebSocket standardは、ブラウザー/サーバーがこれを行うために実装できるping/pongフレームを定義します。それはあなたのサーバー側のソフトウェアに

のNode.jsを依存してもよい

関連する問題