1

計画しているサイトの場合、ログインしているユーザーのブラウザーにコマンドを送信できるサーバーが必要です。

簡単な例:コールセンターの担当者が電話を受けたときに、電話をかけているリードを自動的に引き上げたいと思います。

残りのテクノロジーを整理したので、ブラウザーへの実際の通信がどのように機能するかをスケッチする必要があります。

これまでの私の調査から、これはデスクトップソフトウェアまたはプラグインを使用して行われることがよくありますが、現時点ではかなり古い学校のように感じます。サーバーにコマンドを常にポーリングするものを作成するか(これは機能する可能性がありますが、少し無駄でブルートフォース攻撃を感じます)、サーバーに呼び出し方法を提供する他の手法を使用して、JavaScriptで実行できることを私は知っています。クライアントに。

現在の質問に新しい答えが到着したことを通知するためにstackoverflowが使用するメカニズムのようなもので、おそらくうまくいくでしょう。

では、既知のベストプラクティスはありますか?何があなたのために働いたのですか?

4

5 に答える 5

3

他の回答が示唆するように、WebSockets とロング ポーリングが適切な回答になる可能性があります。ただし、バックエンド (ブラウザ以外の、システムの大きな鉄の部分) でサポートするために必要な sw を調査することも忘れないでください。-- より多くのファイル記述子のサポートを追加する方法はありますが、それがあなたがたどりたい道かどうかを判断してください。

システム全体の観点からは、ポーリング システムをセットアップする方が簡単な場合もあります (そうでない場合もあります)。サーバー、特に特殊な低オーバーヘッド、「今は何もありません」タイプのサーバーをポーリングすることに問題はありません。

ソリューションを堅牢にする必要があることを忘れないでください。クライアントの切断、再起動、断続的なネットワーク障害などをスムーズに処理する必要があります。

上記のすべてをテストすることを忘れないでください....

于 2011-10-02T21:56:06.843 に答える
2

これは、新しい Web ソケット html 5 標準が作成しようとしているものであり、サーバーとクライアント間の接続を開いて双方向通信を可能にしていると思います。しかし、その標準が定着する前に、私は現時点でポーリング以外の方法を認識していません。

于 2011-10-02T21:33:34.520 に答える
2

通常、サーバーはクライアントを呼び出すことができません。そのためには、リッスンして応答するサーバー ソフトウェアがクライアント側にインストールされている必要があります。Webブラウザの場合、そのようなことはありません。したがって、できることは、サーバーをポーリングして、何か新しいものがあるかどうかを確認することだけです。

編集:

これでstackoverflowがどのように機能するかを確認するために、少しテストを行いました。私の結論は、次のシステムによる定期的なポーリングです。回答を追加したい場合、投稿リクエストがサーバーに送信され、おそらくカウンターを開始します。その後、一定の間隔でリクエストが /posts/ID/editor-heartbeat/edit に送信され、下書き (それまでに入力できたもの) が送信されます。respons は、リクエストの成功ステータスとメッセージ数を含む josn です。それまで投稿した場所。その数値が 0 以外の場合は、バーが表示されて警告されます。

于 2011-10-02T21:33:57.880 に答える
1

Websocketはあなたが望むものです。

于 2011-10-02T21:32:15.290 に答える
1

これを行う従来の方法は、クライアントからの定期的な XHRequest を使用して、「新しいメッセージはありますか?」と尋ねるものでした。

TCP 接続や iframe を閉じないという、より洗練された方法があります。興味がある場合は、GMail がどのようにそれを行うかをググることができます。

Websockets はかなり新しいテクノロジーであり、完全に最新のブラウザーにのみ実装されていますが、危険を冒す可能性があります。

于 2011-10-02T21:40:00.913 に答える