12

現在のプロジェクト設定

私はFacebookチャットと同様にWebベースのチャットに取り組んできました。現在の状態では、着信チャットをリッスンし、既存のチャットの新しいメッセージを確認します...

setTimeout(function() { listenForIncomingChat() }, 500);
setTimeout(function() { checkForIncomingMessages( ...params... ) }, 500);

...そうsetTimeout()することで、これらの関数が常に実行されていることを確認します。開いているチャットウィンドウの数によっては、Firebugのコンソールがサーバーに夢中になる可能性がPOSTあります:)

明らかにこれは本当に非効率的ですが、それは私が物事を機能させることができる唯一の方法です。今、私はそれをより良くする方法、それを正しく行う方法を探しています!

いくつかの研究

今、 Cometプログラミングについて聞いたことがあり、これがサーバーとの長寿命のHTTP接続を開く方法であると聞きましたが、Cometの背後にあるテクノロジーやアイデアに精通していません。HTML5用のWebSocketはおそらくさらに優れていますが、それは本格的ではなく、すべてのブラウザーでサポートされているわけではないので、機能するものに固執します。

ウィキペディアによると、Cometスタイルで開発する方法はいくつかあります。ストリーミング(非表示のiFrame、XMLHttpRequest)または長いポーリングを使用するAJAX(XMLHttpRequest、スクリプトタグ)です。しかし、私はこれについて何も知りません。AJAX Push Engine(APE)についても読んだことがあり、見た目はかっこいいですが、当面はサードパーティを使用したくありません。

最近WebChat2.0に出くわしたので、ソースコードを調べて、すべてがどのように機能するかを理解しようと思います。

質問に移ります

では、この種のプロジェクトを開始する方法に関するサンプルコード/チュートリアルはどこにありますか?コメットテクニックをどのように実装しますか?サーバーとの長期間有効なHTTP接続を設定するにはどうすればよいですか?

4

1 に答える 1

9

node.jsを使用したチャットルームの例を次に示します。ソースコードはこちらです。

クライアントはポーリングを使用していると思いますが、サーバー側もJSにあり、node.jsはこのタイプのものに効率的であるため、この例は興味深いものです。

于 2010-07-09T17:01:41.443 に答える