2

接続が開いたら、複数の HTTP 応答をクライアントに送信する方法はありますか? たとえば、OpenShift などの PaaS 上で実行される Python で記述されたゲーム サーバーであるとします。クライアントは、接続要求を含む「GET」要求を送信します。そして、サーバーからクライアントに「更新」を1秒に1回送信できるようにしたいと考えています。接続を開いたままにしてクライアントに書き込もうとしましたが、うまくいきませんでした。私ができることは、クライアントが毎秒「更新のリクエスト」を送信でき、サーバーがそれに応答できることだけでした。これに対する回避策はありますか?

前もって感謝します。

4

2 に答える 2

2

あなたが説明しているのは、サーバーとクライアント間の永続的な接続である websocket です。WebSocketがユーザーのブラウザーでサポートされていない場合、同じ目的を果たす他のプロトコルにフォールバックするため、socket.ioを使用することをお勧めします。

ソケットまたは socket.io を使用するには、それらをサポートするサーバー上の Python ライブラリと、gevent や tornado などのコルーチンをサポートするライブラリを使用する必要があります。他のオプションについては、 gevent-socketio (しばらく更新されていませんが) などを確認するか、pip で検索してください。pip search socketio

独自のソリューションを実装したくない場合は、PubnubPusherなどのメッセージング サービスを使用することもできます。自分の python+openshift アプリケーションで Pubnub を使用していますが、統合は簡単です。これらのメッセージング サービスは、クライアントとの永続的な接続を維持します。一度に 1 つまたは複数のクライアントを更新する場合は、1 つのメッセージをメッセージング サービスに送信するだけで、目的の受信者にメッセージが伝達されます。

于 2013-07-25T04:21:22.047 に答える
0

この質問を見ている他の人のために、あなたは一方向の通信を説明しています。ウェブソケットではなく別のアプローチはServer Sent Eventsであり、プロトコルを変更せずにクライアントに情報を送信するための HTTP ソリューションです (ウェブソケットのように) 比較を読むことができますこの記事の両方のオプションの間。

また、Python でそれらを実装する方法についての記事もここにあります。

于 2019-01-11T16:42:12.910 に答える