2011-07-02 5 views
1

jQueryのajaxリクエストを送信し、新しいコンテンツで更新することで、インターフェースを更新するのは簡単です。しかし、私はより具体的なものが必要です。クライアントが要求していないクライアントブラウザのコンテンツをサーバーが更新できるようにHTTPを使用する方法はありますか?

クライアントにリクエストを送信せずにレスポンスを送信し、サーバー上に新しいものが見つかったらコンテンツを更新したいと考えています。毎回AJAXリクエストを送信する必要はありません。サーバーに新しいデータがある場合、サーバーはすべてのクライアントに応答を送信します。

HTTPまたはブラウザ内の特定の機能を使用してこれを行う方法はありますか?

答えて

3

Websocket、Comet、HTTP long polling。

1

Aaah! Webの原則を壊そうとしている:) Webが純粋なMVC(model-view-controller)であった場合、 'サーバ'は実際にクライアントにメッセージを送信して更新を依頼することができます。問題は、サーバーの負荷分散が可能で、同じ要求を別のサーバーに送信できることです。これで、クライアントにメッセージを送り返す場合は、誰がサーバーに接続しているのかを知る必要があります。サイトがかなり人気があり、毎日約10万人が接続しているとしましょう。実際には、インターネット上のどこにあるのかを知り、メッセージを「プッシュ」できるように、それぞれのIPを格納する必要があります。

警告:

  • 彼らはもはやあなたのウェブサイトを閲覧している場合はどう?現在のところ、ブラウザを閉じると自動的にログアウトする方法はありません。サーバがログアウトした場合、一定のタイムアウト後にチェックする必要があります(または、サーバがそのチェックを行わないようにすべてのレスポンスとともに新しいノンスを送信してください)
  • システムの再起動/クラッシュなどはどうですか?あなたはあなたが追跡していたすべてのIPを失います。あなたは正方形に戻っています - 人はあなたに接続していますが、新しい要求を受け取るまで、あなたは本当に "あなたのモデルごとに。
  • Facebookのニュースフィードや右上にある「最近の」リンクの例を考えてみましょう。壁を閲覧しているときに、最近の横の番号が上がったか、新しい「フィード」が来たことがありますあなたの壁のポストの上に!クライアントがサーバーに定期的な要求を送信して、更新された内容を確認します。

あなたはそれが簡単で安らかに保たれています。クライアントがデータをプルするためにサーバーを "ポーリング"してプッシュを希望するのは効率的ではないと感じるかもしれませんが、サーバーのデザインは簡素化されます:)

私はajax-pullingが最適です - クライアントに計算を配布してシンプルに保つ(KIS原則:)

もちろん、あなたはそれを回避することができます、それは価値がありますか?

希望はこのことができます:)

2

それは(あなたも名前彗星の技術の下でそれを見つけることができます)ネームサーバプッシュを持っています。これらのキーワードを使用して検索を行うと、束の例やツールなどが見つかります。特別なプロトコルは必要ありません。

1

RFC 6202はよく読まれるかもしれません。