問題タブ [flask-socketio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Flask、Flask-SocketIO、nginx を使用して SSL (http から https) を実装する方法
私のアプリケーションでは、Flask-Socketio、Flask、および nginx を使用しています。HTTP から HTTPS へのすべての処理は、アプリケーション サーバー レベルではなく Web サーバー レベルで行う必要があるという投稿を読みました。この属性を使用して、rewrite
すべての HTTP リクエストを HTTPS リクエストとしてリダイレクトしました。これは、静的ページで正常に機能します。ただし、動的コンテンツを読み込もうとすると、エラーが発生しThe page at 'https://localhost/myLoc' was loaded over HTTPS, but displayed insecure content from 'http://localhost/myLoc/more/paths?t=1390397': this content should also be loaded over HTTPS.
ます。
さらに、このエラーも発生しますXMLHttpRequest cannot load http://localhost/myLoc/more/paths?t=1390397. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost' is therefore not allowed access.
私のnginx.confファイルは次のようになります
助けてください。Flask-SocketIO には、証明書とキーへのパスも含める必要がありますか?
python - コンソールのログ出力をflask-socketioにリダイレクトします
Pythonlogging
モジュールを介してコンソールにイベントを記録します。また、そのログ メッセージを socket-io (フラスコ) 経由でクライアントに送信したいと考えています。次のアプローチは部分的にしか成功しませんでした。
ブラウザで結果を取得しますが、それでも取得します
コンソールの送信呼び出しごとに。送信呼び出しのコンテキストが利用できないと思います...その問題に対処する便利な方法は何ですか? ありがとう。
python - 同時に 1 つのクライアントでフラスコ アプリを使用できるようにするにはどうすればよいですか
同時に 1 つのクライアントのみが編集できる webapp を作成したいと考えています。私はフラスコとフラスコソケットを使用しています。承認されたクライアントが去った後 (socketio の切断イベント)、次は編集できるようになります。現在、websockets への複数の呼び出しがあり、http は 1 つの websocket だけではありません。私は単純な html フォームも持っているので、着信要求もブロックする必要があります。
socketio イベントでリクエスト オブジェクトから IP を取得できました。
私には悪いアプローチのように見えます...
python - Flask-Socketio: 名前空間のキーエラー。接続されているクライアントのリストを取得
Flask を実行しているサーバーで Flask-Socketio を使用しており、クライアントは JavaScript を実行しています。すべてのクライアントは、名前空間を使用してサーバーに接続します'/test'
。クライアントで特定のアクションが発生すると、接続されているすべてのクライアントを反復処理するサーバー上の関数をクライアントがトリガーするようにします。次のコード セグメントを使用して、接続されているクライアントのリストを反復処理しています。
各接続には、接続時に割り当てられた「id」キーがあります。
ただし、名前空間キーが見つからなかったことを示す次のエラーがサーバーから返されることがあります。
サーバーに接続するすべてのソケットが同じ名前空間に接続しているため、このエラーが発生する理由がわかりません。さらに、このエラーは関数呼び出しの一部でのみ発生します。このエラーが一貫していないのはなぜですか?
接続されているクライアントのリストを反復処理するより良い方法はありますか?
python - Flask-socketio python を使用した Socket.io。ソケット キープアライブ/タイムアウトの設定方法
socket.io のタイムアウト値に関するドキュメントを見つけるのに苦労しています。クライアントで //cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js を使用し、サーバー側で Flask-SocketIO を使用しています。
ソケットを作成する方法は次のとおりです。
問題は、サーバーがクライアントに何も送信しない場合、またはその逆の場合、クライアントが切断され、サーバーがクライアントに別の発行を行おうとすると、クライアントが既に切断されているために失敗することです。クライアントの接続を維持するにはどうすればよいですか?
ありがとう!
websocket - Flask-soketio アプリケーションは、別のイベント ハンドラー プロセスが完了していない場合、クライアントからの新しい発行イベントを処理しません。
Flask、flask-socketio を使用して、ブラウザーで「コマンド文字列」(ping 8.8.8.8 など) を受け入れるアプリケーションを実装し、サーバーがそれを実行して、コマンドの出力をリアルタイムでブラウザーに返します。
私の実装は以下の通りです。
クライアント側は「exec_event」イベントをサーバーに発行し、サーバーはコマンドを実行し、コマンドによって新しい出力が生成されると、クライアントに「exec_response」イベントを継続的に発行します。
コマンドを終了したい場合、クライアントは「ctrlc_event」をサーバーに送信することもできます。
私が得た問題は次のとおりです。
サーバーは、前の「exec_event」を処理しているとき、「ctrlc_event」を処理できません。サーバーで「ping 8.8.8.8」などの長時間実行コマンドを直接強制終了すると、サーバーは「ctrlc_event」の処理を開始します。
誰かが私に理由を指摘したり、方向性を教えてもらえますか?
サーバー側コード
クライアントコードは
python - RuntimeError: リクエスト コンテキストの外で動作しています
誰かがページに接続すると、ブラウザに 10 秒ごとにエミットを送信する「キープアライブ」Websocket スレッドを作成しようとしていますが、エラーが発生し、それを回避する方法がわかりません。
これを機能させる方法についてのアイデアはありますか?
そして、「切断」が送信されたら、どうすればこのスレッドを強制終了できますか?
ありがとう!
python - フラスコのソケットからユーザーエージェント情報を取得する
フラスコのsocketioからユーザーエージェント情報を取得することは可能ですか? ハンドシェイク中にユーザー関連の情報がソケットサーバーに送信されると思います。
それが不可能な場合は、クライアントにこの情報を手動で送信してもらう必要があります。