2012-12-27 7 views
9

定期的に変更をポーリングすることでこれを行うことができます。これはAJAXによって達成することができます(例えば、とsetInterval()を使用して)。ウェブページに変更を加えずに更新する

しかし、私はこれを行うための他の方法があることを知りたいですか?他のより安価な方法またはより効率的な方法?すばらしいチャットクライアントのロジックは?あなたが入力を開始するとすぐ、もう一方の端はあなたが入力していることを知るようになります。

ここでは、upv​​oteカウントを更新したり、ページが更新されずに編集が行われたことなどを示すために、どのメカニズムをstackoverflowで使用しますか?

+0

私はしばらく前に尋ねた質問 http://stackoverflow.com/questions/13666872/php-chat-application-questions – BLOB

+2

これはあるかもしれないです良いスタート:http://www.google.com/search?q=google+comet+programming –

+0

ありがとうPranav、私もそれを知っていた:) Skype、gtalkなどはすべてこの技術自体を使用するか、他の方法がある? – Amar

答えて

16

それが(近い)リアルタイム、すぐに思い浮かぶ3つの事がある中で、同期クライアントとサーバを維持することになる:

  • が長いポーリング:あなたはすでにこれを述べましたクライアントにタイマーを設定して、10秒ごとに新しいAJAX要求をトリガーします。これはおそらく3の最も「低技術」であり、最も効率の低いものです。 sdespontは、すでにコメントでこれを述べた。しかし、それはまた、最も互換性のある

  • WebSocketをを(それはIE6/7のように、すべてのブラウザでも、物事を動作するという意味)。 WebSocketは長いポーリングよりも効率的ですが(クライアントとサーバーの双方向の通信を無期限に開いているので)、サーバーからの定期的な更新を行うだけであれば、非常に重大なソリューションになる可能性があります。 FirefoxとChromeからすべてのバージョンはand IE added support in IE10

  • サーバー送信されたイベント、それをサポートしています。この1つはあまり人気(または同じようによく知られていない)のようです。これにより、サーバーはクライアントに変更を送信できます(ロングポーリングの場合のように、サーバーからの変更を要求するクライアントに対抗する)。これは単方向通信(サーバー - >クライアント)であり、要求が完了すると(双方向通信が開いているWebSocketとは反対に)接続が閉じられます。すべてのブラウザがそれをサポートしてもう一度、and there is no IE support at all

Thisは、クライアント - サーバ間の通信のより近代的な方法との違いを説明する良い記事ではありません。 し、サーバー・送信されたイベントについての詳細情報が必要な場合は、ここでthis is a good write up

関連する問題