16

私は、約20人のテスト担当者がターン制のゲームを互いに/対戦する科学実験に取り組んでいます。現在、これはWSGIインターフェイスを備えたPythonWebアプリです。WebSocketで使いやすさを向上させたい:すべてのプレイヤーがターンを終えたら、すべてのクライアントにステータスを更新するよう通知したいと思います。現在、全員がターンタイムアウトを待つか、継続的にリロードして「ターンはまだ進行中です」というエラーメッセージが再び表示されないようにする必要があります(ビジーウェイト、効果的に)。

複数のWebSocketライブラリのドキュメントを読み、WebSocketがどのように機能するかは理解していますが、WSGIとWebSocketを混合するためのアーキテクチャについてはよくわかりません。同じプロセスでWebSocketとWSGIサーバーを使用できますか(ある場合は、どのように実際に任意のWebSocketライブラリを使用して)my_websocket.send_message()、WSGIハンドラーから呼び出すだけですか、それとも別のWebSocketサーバーを使用してIPCを実行する必要がありますか?それとも私はそれらをまったく混ぜるべきではありませんか?

編集、6か月後: WSGIサーバーと統合する代わりに、(アウトバーンを使用して)別のWebSocketサーバープロセスを開始することになりました。その理由は、2つを分離する方がはるかに簡単でクリーンであり、WSGIプロセス(サーバー間通信)からWebSocketサーバーとの通信が簡単で、websocket-clientを使用した最初の試みに取り組んだためです。

4

2 に答える 2

14

これはあなたが望むことをする例です:

WSGI Web アプリ (この場合は Flask ベースですが、WSGI に準拠するものなら何でもかまいません) と、1 つのサーバーと 1 つのポートで WebSocket サーバーを実行します。

Web ハンドラー内から WS メッセージを送信できます。Autobahn は WebSocket の上に PubSub も提供します。これによりWampServerProtocol.dispatch、あなたの場合のように (経由で) 通知の送信が大幅に簡素化されます。

開示: 私は Autobahn の著者であり、Tavendo で働いています。

于 2012-10-30T11:49:46.090 に答える