flask-SocketIO 5.X Error:400 "The client is using an unsupported version of the Socket.IO or Engine.IO protocols "

flask-SocketIO 5.X Error:400 "The client is using an unsupported version of the Socket.IO or Engine.IO protocols "

这是我第一次使用“flask-SocketIO”,即使使用最简单的代码,我也一直收到错误 400。

我正在尝试 运行 windows10

上的本地代码

点冻结:

WARNING: Could not generate requirement for distribution -rotli 1.0.9 (c:\python3\lib\site-packages): Parse error at "'-rotli=='": Expected W:(abcd...)
bidict==0.21.2
cffi==1.14.5
click==7.1.2
dnspython==1.16.0
eventlet==0.30.1
Flask==1.1.2
Flask-Login==0.5.0
Flask-SocketIO==5.0.1
Flask-SQLAlchemy==2.4.4
Flask-WTF==0.14.3
gevent==21.1.2
gevent-websocket==0.10.1
greenlet==1.0.0
gunicorn==20.0.4
itsdangerous==1.1.0
Jinja2==2.11.3
MarkupSafe==1.1.1
passlib==1.7.4
psycopg2==2.8.6
pycparser==2.20
python-dotenv==0.15.0
python-engineio==4.0.0
python-socketio==4.6.0
six==1.15.0
SQLAlchemy==1.3.23
tornado==6.1
Werkzeug==1.0.1
WTForms==2.3.3
zope.event==4.5.0
zope.interface==5.2.0

我用来 运行 脚本的命令 python test.py

Python 代码 ( test.py ) - 来自 socketIO 的网站。

from flask import Flask, render_template
from flask_socketio import SocketIO

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

if __name__ == '__main__':
    socketio.run(app)

我也试过 python link 和 html 有 socket.io.min.js 只是为了看看是否会有任何不同。

@app.route("/test", methods=['GET', 'POST'])
def test():

    return render_template("test.html")

test.html 在 </body>

之前有这一行

<script src="https://cdn.socket.io/3.1.1/socket.io.min.js"></script>

我已经尝试将 flask-socketIO 降级为 4.x 并使用 socketIO 2.x 作为前端,但它也没有用,所以我猜问题可能出在其他方面。

通过卸载 flask-socketiopython-socketiopython- engineio 使用这些命令

pip uninstall flask-socketio
pip uninstall python-socketio
pip uninstall python-engineio

然后重新安装 flask-socketio

pip install flask-socketio

我能够解决我的问题,显然我有错误的依赖关系,这是解决问题的最佳方法。