問題タブ [python-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.

0 投票する
0 に答える
768 参照

websocket - Socketio エラー: @sio.event AttributeError: 'Client' オブジェクトに属性 'event' がありません

私は ctf チャレンジ用の soem コードを書いています。基本的には socketio を使用して偽の内部ネットワークと通信していますが、python3 bridge.py locked_out.logicdata で次のコードを実行すると、次のエラーが発生します: Socketioエラー: @sio.event AttributeError: 'Client' オブジェクトに属性 'event' がありません。これがなぜなのか誰か知っていますか?乾杯!

0 投票する
1 に答える
872 参照

javascript - Python-socketio Server.call() メソッドが JavaScript クライアントで動作しないようです

問題を要約する

python-socketio作成中の Web ベースのゲームのサーバーとしてパッケージを使用しています。python-socketio[client]私は当初、デバッグ目的でクライアントを Python で ( を使用して) 実装し、Server.call()開発中にこのメソッドを広範囲に使用しました。これは、Python で実行されているすべてのものと完全に連携し、クライアント側の関数の戻り値をサーバーに送信する前に、ユーザーの入力を待ちます。

しかし、JavaScriptに切り替えようとすると、Server.call()何をしてもタイムアウトしてしまいます。既に実装されているプログラムを完全にバラバラにすることなく切り替えることができる代替手段についてはよく知りませんが、提案は受け付けています。

あなたが試したことを説明してください

私は Python クライアント コードを JavaScript で再実装しようとしましたが、最初に書かれたとおりに多かれ少なかれ正確です。Server.call()上で述べたように、使用するたびにタイムアウトする(または設定すると無期限にハングする)ため、これは失敗でしたtimeout=None

Server.call()さらに、コールバックを使用Server.emit()してグローバル変数を設定し、使用して設定されるまでブロックすることから切り替えようとしましServer.sleep()たが、これも機能しないようです。

コードを表示する

この問題を示す最小限の例を次に示します。サーバーは両方のユースケースで同じであり、Python クライアントと JavaScript クライアントは実質的に同じですが、Python クライアントを使用している場合にのみ機能します。

python-socketioPython で記述され、モジュールを使用するサーバーは次のとおりです。

動作中の Python クライアントは次のとおりです。

これは、動作しない JavaScript クライアントとそれに対応する HTML です。

なぜこれが機能しないのかを理解するのを手伝ってくれる人がいる場合 (または簡単な代替案を推奨する場合)、私はあなたに大いに感謝します! :)

サーバーからのログ出力

JavaScript クライアントを実行しようとしたときのサーバー ログは次のとおりです。

比較のために、Python クライアントを正常に実行したときのサーバー ログを次に示します。