2

私は WebSocket をいじっていますが、基本的な WebSocket 接続を行う Tornado サーバーを簡単に実行できることに非常に満足しています。私は今日まで Tornado を使ったことがありません。見たものは気に入っていますが、その使い方に関していくつか質問があります。

主に、私は WebSocket を使用して、2 つ以上のクライアント マシン間でオーバーヘッドの少ない通信を行えるようにしています。(会話の目的で、チャット クライアントとだけ言いましょう)明らかに、複数のマシンからサーバーに接続でき、それらすべてがメッセージをサーバーにプッシュし、サーバーが応答できます。これは素晴らしいことです。しかし、それは標準の AJAX リクエストよりも優れているわけではありません。永続的な接続がある場合は、クライアントにもデータをプッシュできるようにしたいと考えています。最も単純なシナリオは、ユーザー 1 がサーバーにメッセージを投稿し、それを受信するとすぐにサーバーがそれをユーザー 2 にプッシュするというものです。

では、それを達成するための良い方法は何でしょうか? Tornado で確認できる限り、メッセージをどこかのデータストアに配置し、他のすべての接続で新しい情報をポーリングする以外に、接続間で通信する方法はありません。ただし、その時点で実際に行っていることは、ポーリング プロセスをクライアントからサーバーに移動することだけなので、これは非常に扱いにくいと思います。

もちろん、私はここで完全に間違ったツリーを吠えているかもしれません. Tornado がこの仕事に適したツールではないというのは確かにもっともなことです。

4

2 に答える 2

3

トルネード、WebSocket、redisを使用したチャットサーバーは次のとおりです:https ://gist.github.com/pelletier/532067 (更新:リンクが修正されました、@ SamidhTに感謝)

于 2010-11-02T17:53:18.860 に答える
0

答えはすでに受け入れられていますが、別のサービスを使用することは、私にはまだ非常に非効率的です。共有メモリ + 条件変数 / セマフォを使用しないのはなぜですか? あなたは、標準的な消費者と生産者の問題を抱えているように聞こえます

于 2013-05-12T17:47:59.583 に答える