1

最近、サーバーが「最近のアクティビティ」ボックスなど、すべてのリスナーにまったく同じデータを含むイベントストリームを配布するいくつかのケースに遭遇しました。

Apacheのようなサーバーでスレッド処理を実行し、同じデータを含むすべてのコメットストリームについてデータベースにクエリを実行するのは、非常に奇妙で非効率的であることに気付きました。

これらのグローバル(ユーザーごとではない)ストリームに対して行うことは、データを継続的に送信する単一のスレッドと、ヘッダーを出力してメインスレッドに「マージ」する新しいリクエストごとに新しい(グリーン)スレッドを実行することです。

1つのスレッドが複数のソケットにサービスを提供すること、または複数のクライアントが同じソケットをリッスンすることは可能ですか?

o=イベント

       # threads received
|  a b # 3
o / /  # 3       -
|/_/
|      # 1
o  c   # 2       a, b
| /
o/     # 2       a, b
o      # 1       a, b, c
|      #                    connection b closed
o      # 1       a, c

このようなものはありますか?それはうまくいくでしょうか?できますか?

免責事項:私はサーバーの専門家ではありません。

4

3 に答える 3

1

ASP.NETを使用している場合は、次の投稿が役立ちます

http://beta.codeproject.com/KB/aspnet/CometAsync.aspx

ちなみに、Cometを実装してスレッドごとに複数のクライアントにサービスを提供することは可能ですが、すべてのクライアントに対して1つのスレッドだけでは不十分だと思われますか?

于 2010-06-17T13:34:56.210 に答える
1

node.jsをチェックしてください-シングルスレッドのイベント駆動型サーバー。ボーナスとしてJavaScriptを使用します。

于 2010-06-17T13:22:41.027 に答える
0

あなたはCometに適用される「非同期Webリクエスト」について話している。「非同期Comet」のようなものもある。

私の意見では、このアプローチは最近非常に人気があり、深刻な欠陥があります。

于 2011-01-10T08:40:12.187 に答える