私はpython flask-socketioパッケージを通じてSocketIOを使用するアプリケーションを作成しようとしています。私のような私のサーバーを設定している:破損したsocket.io.jsファイルを扱うFlask開発サーバー
ファイルを./run.py
from my_project import app, socketio
if __name__ == '__main__':
socketio.run(app, host='0.0.0.0', debug=True)
ファイル./my_project/__init__.py
from flask import Flask
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'MY SECRET KEY'
socketio = SocketIO(app)
@socketio.on('connect')
def print_connect():
print('Client connected')
@socketio.on('disconnect')
def print_disconnect():
print('Client disconnected')
from my_project import views
を、私は、クライアント上でそれを使用しようとすると、「定義されていません」エラーが発生しているので、私ましたChromeがサーバーから取得したファイルsocket.io.js
を開きましたが、次の内容(その全体)に驚くことがあります:
�0{"pingTimeout":60000,"sid":"3d6073ff436c49b1aa06090dbb001ceb","upgrades":[],"pingInterval":25000}�40
私のアプリとは何の関係もないことを再確認するには、まったく同じ文字化けした文字列を返したコマンドcurl 127.0.0.1:5000/socket.io/socket.io.js
でcurlでファイルを取得しました。
私は(私が知る限り)どのような方法でもExpressを使用していないので、クライアントsocket.ioファイルのソースに関するその他の質問のほとんどは適用されないようです。さらに、私はサーバーから404を取得していない、私はいくつかの種類ののデータを取得しています。
私のサーバーが明らかに破損したsocket.ioファイルを処理している理由をトラブルシューティングするにはどうすればよいですか?
ここで問題がどこにあるか確認します。私は正式なSocketIO [get started](https://socket.io/get-started/chat/)のdocsに従っています。ここでは、クライアント上でその魔法のパス文字列を使用すると言います。 ](https://stackoverflow.com/questions/26480991/how-nodejs-and-socket-io-serve-socket-io-js?rq=1))。マジックパスは公式のサーバーサイドのnode.jsパッケージにのみ存在し、Pythonバインディングには存在しないということは、今まで私には起こりませんでした。私はインストールで何かが壊れていることを心配していました。でも、私が404を手に入れただけではないということは、私にとっては奇妙なことです。 –
はい、Pythonサーバーは実際にはバインディングではなく、Node.js公式実装とコードを共有しない完全なサーバーです。私はURLの解析を改善してこのケースの404を返すことができると思うが、 '/ socket.io /'で始まるものはサービスのポーリング/ websocketエンドポイントとみなされる。 – Miguel