質問

私はWebSocketsを少し手探りしており、基本的なWebSocket Connectionsを実行するTornadoサーバーを実行するのがどれほど簡単かに非常に満足しています。私は今日まで竜巻を使用したことがありませんでしたが、私が見たことが好きなとき、それが使用されていることに関して私が持っているいくつかの質問があります。

主に、私はWebSocketを使用しているので、2つ以上のクライアントマシン間で低いオーバーヘッド通信を使用できるようにしています。 (会話の目的のために、それがチャットクライアントだと言ってみましょう)明らかに私は複数のマシンからサーバーに接続することができ、それらはすべてメッセージをサーバーにプッシュすることができ、サーバーは応答できます。しかし、それはあなたの標準的なAJAX要求よりあまり良くありません。永続的な接続がある場合は、クライアントにデータをプッシュできるようにしたいと思います。可能な限り単純なシナリオは、ユーザー1がサーバーにメッセージを投稿し、それを受信すると、サーバーがすぐにユーザー2にプッシュすることです。

それで、それを達成するための良い方法は何でしょうか? Tornadoで見ることができる限り、メッセージをどこかにデータストアに配置したり、新しい情報の他のすべての接続を投票する以外の接続間で通信する方法はありません。それは私をひどく不格好であると思います。なぜなら、あなたがその時点で本当にしているのは、ポーリングプロセスをクライアントからサーバーに移動することだけだからです。

もちろん、私はここで完全に間違った木をbarえているかもしれません。竜巻が単にこの仕事に適したツールではないことは確かにもっともらしいことです。もしそうなら、代替案の提案を聞くことができてうれしいです!

役に立ちましたか?

解決

Tornado、WebSockets、Redisを使用するチャットサーバーは次のとおりです。 https://gist.github.com/pelletier/532067 (更新しました: :リンク修正、@samidhtに感謝します)

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top