2017-08-03 10 views
0

現在、私は小さなWebフロントエンドと同じサーバーへのコマンドラインインターフェイスを実行するFlaskサーバーを持っています。基本的な考え方は次のようになります。Flaskデータベースがポーリングなしで変更されたときに、すべてのクライアントを更新する最も良い方法は何ですか?

<Top section: allows file upload> 
    * list of files from database 

<Second section: allows file manipulation/ upload> 
    * list of files from database 

<Third section: Not files, but still allows for database changes> 
    * list of things made from database 

は今、これはフロントエンドからうまく動作しますが、現在はCLIまたは他のクライアントがデータベースに変更を行った場合、それは他のクライアントを更新しません。 JSのポーリングや10秒ごとのファイルのリストの書き直しをややこしくしていますが、それは両方とも効率が悪く、すべてのセクションでそれをやらなければならないと非常に乱雑に見えます。私は様々なフォーラムでWebSocketを紹介していましたが、これを使ったことはありませんし、追加するのが苦痛かどうかもわかりません。私は1つの機能のためにすべてを書き直そうとはしていません。

最終的な持ち去り:ポーリングよりもすべてのクライアントを更新する方法/ポーリングを効率的に行う方法は?

答えて

2

はい、あなたは正しいです。 socketsが必要です。インターネット上で記事の束がありますが、要約をして、ソケットがあなたの要求に最も適している理由を説明したいと思います。

ソケットは、ポーリングの必要なしにクライアントとサーバー間の双方向通信を実現する方法です。

Flask-SocketIO

フラスコ-SocketIOというパッケージがあること 双方向通信クライアントとサーバの間の低遅延をフラスコアプリケーションへのアクセスを提供します。

次に使用すると、1つのクライアントは、データベースまたは類似のものにいくつかの作業を行う際に、接続されたすべてのクライアントに変更を送信したいシナリオのために、あなたはを放送を使用する必要があります。ブロードキャストオプションを有効にしてメッセージを送信すると、ネームスペースに接続しているすべてのクライアント(送信者を含む)がメッセージを受信します。 HereあなたはFlask-SocketIOを使って放送の詳細を見つけることができます。

関連する問題