我正在使用 Flask 和 SocketIO。 我正进入(状态
The client is using an unsupported version of the Socket.IO or Engine.IO protocols (further occurrences of this error will be logged with level INFO)
在我的 Flask 控制台上。
这是我的版本:
bidict==0.22.1
click==8.1.3
colorama==0.4.6
Flask==2.2.2
Flask-SocketIO==5.3.6
h11==0.14.0
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.1
numpy==1.25.1
opencv-python==4.8.0.74
python-engineio==4.8.0
python-socketio==5.10.0
simple-websocket==1.0.0
six==1.16.0
Werkzeug==2.2.2
wsproto==1.2.0
在 HTML 正文的末尾,我有以下几行:
<script src="/socket.io/socket.io.js"></script>
<script type="module" src="{{url_for('static', filename='js/video.js')}}"></script>
在我的 video.js 文件的顶部,我有这一行:
import io from '/socket.io/socket.io.js';
var socket = io();
在我的 Flask 项目中,我将其组织为一个包,我在 init.py 中有这些行:
app = Flask(__name__)
app.debug = True
socketio = SocketIO(app)
此外,我有一个名为 run.py 的文件,其中包含以下内容:
from mypackage import app, socketio
if __name__ == '__main__':
socketio.run(app)
我尝试降级到 socketio 版本 4.3.2,这只会因某些奇怪的原因导致 Werkzeug 错误兼容性问题。
我在网上查了很多解决方案都没有帮助。
据我了解,socket.io.js 文件是由 Flask socketio 生成的,所以它应该自动兼容?
我尝试在开发人员工具中查看 Javascript 文件。通过复制 url http://127.0.0.1:5000/socket.io/socket.io.js 访问链接时,我仅得到“客户端正在使用不受支持的 Socket 版本。 IO 或 Engine.IO 协议”。
我已经在这个问题上花了近3个小时了。请帮忙。
错误非常明显:“client正在使用不受支持的版本......”。问题是你的客户端版本:
<script src="/socket.io/socket.io.js"></script>
与这里的服务器版本不兼容:
python-engineio==4.8.0
python-socketio==5.10.0
因此,首先确定您拥有的客户端版本,然后查看文档中的版本兼容性表,以确保您在客户端和服务器之间使用一组兼容版本。