コメントから他の回答への判断として、「関連」サイドバーに大量の解決策が表示されるため、解決策は提供しません。適切なものを選択する必要があり、「理由」を知ることで、知識に基づいた決定を下すことができます。
チャットが正しく感じられるためには、応答に何らかの即時性が必要です。時間の 1 秒の遅れは、時間の経過とともにユーザーに認識され、時間のずれを感じさせます。ブラウザーで即時または「リアルタイム」応答を機能させるには、新しい情報が入ってくるとすぐに表示されるように永続的な接続が必要です。
HTTP のリクエスト/レスポンス仕様のため、ブラウザでの永続的な接続は困難です。ブラウザーに永続的な接続をもたらすための作業中の仕様がありますが、それらのブラウザーはユビキタスではありません。将来的には、永続的な接続はWebSocketsとSPDYによって提供されます。どちらも最新バージョンの Chrome、Safari、および FireFox で利用できますが、IE は少し遅れています。
永続的な接続の別のオプションはXMPPです。XMPP は、Jabber チャット クライアントに使用されるプロトコルです。オープンソースの実装であるため、他の多くの用途に移植されています。ブラウザを XMPP ソケットに接続し、新しいメッセージをリッスンできるようにする JavaScript ライブラリが存在します。私が過去に見た方法は、メッセージを Web サーバーに送信し、Web サーバーが新しいメッセージについて XMPP サーバーに通知し、XMPP サーバーが新しいメッセージをすべてのユーザーにブロードキャストするというものでした。ただし、これには XMPP サーバーが必要であり、システムの複雑さが増します。
ほとんどのユーザーはブラウザーのバージョンの最先端にいるわけではないため、古いブラウザーを処理できる必要があります。ほとんどの代替手段には、新しいデータが到着するたびに応答するサーバーへの長時間接続を開くことが含まれます。古いブラウザで永続的な接続をシミュレートする方法のリストを次に示します。
- アドビ フラッシュ ソケット
- ActiveX HTML ファイル (IE)
- サーバー送信イベント (Opera)
- マルチパートエンコーディングを使用した XHR
- ロングポーリングを使用した XHR
これらの古いメソッドと WebSocket は、Juggernautというライブラリによってサポートされています。
UPDATE Juggernaut は、正当な理由により、メンテナーによって廃止されました。最新のブラウザーは、Server-Sent Events (SSE) と呼ばれる仕様を通じて、すぐに使用できる永続的な接続をサポートしています (もちろん IE は例外です)。下位互換性はポリフィルによって処理されるようになり (ポリフィルとは何ですか? )、非推奨の投稿ノートにあるように、レガシー ブラウザーに SSE を導入するための優れたものがいくつかあります。