最近、サーバーが「最近のアクティビティ」ボックスなど、すべてのリスナーにまったく同じデータを含むイベントストリームを配布するいくつかのケースに遭遇しました。
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
このようなものはありますか?それはうまくいくでしょうか?できますか?
免責事項:私はサーバーの専門家ではありません。