Comet についていくつかの情報がありますが、(クライアントからサーバーへの) 接続を維持する方法を知りたいです。それはどのように行うのですか?
質問する
410 次
1 に答える
2
コメット、またはロング ポーリング ajax は、長期的には接続を開いたままにしません。
HTTP はステートレスで、リクエストを送信してレスポンスを取得します。それでおしまい。
では、接続が開いたままになっているのはどのように見えるでしょうか? HTTPリクエストを悪用しているためです。
リクエストを送信すると、クライアントはレスポンスが来るまで、またはサーバーがこの接続がタイムアウトに達したと判断するまで待機します。
Comet では、サーバーは意図的にすぐには応答しません。彼が応答を送信したい場合にのみ応答します。これが、クライアントが HTTP 要求を送信し、応答またはタイムアウトを待つ理由です。
このように、HTTP 要求のタイムアウト プロパティを悪用しているだけの場合、サーバーからクライアントへのある種のプッシュのように見えます。
たとえば、これはいくつかのコメット コードです (簡潔にするために jQuery を使用しています)。
setTimeout( function comet () {
$.get( '/some/url', {}, function ( data ) {
// Process the request's response
// And recall setTimeout
setTimeout( comet, 1 )
} )
}, 1 )
于 2012-04-23T07:51:51.447 に答える