2

Comet についていくつかの情報がありますが、(クライアントからサーバーへの) 接続を維持する方法を知りたいです。それはどのように行うのですか?

4

1 に答える 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 に答える