客户端正在使用不受支持的 Socket.IO 或 Engine.IO 协议版本(此错误的进一步发生将使用级别 INFO 进行记录)

问题描述 投票:0回答:1

我正在使用 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个小时了。请帮忙。

websocket socket.io flask-socketio python-sockets flask-sockets
1个回答
0
投票

错误非常明显:“client正在使用不受支持的版本......”。问题是你的客户端版本:

<script src="/socket.io/socket.io.js"></script>

与这里的服务器版本不兼容:

python-engineio==4.8.0
python-socketio==5.10.0

因此,首先确定您拥有的客户端版本,然后查看文档中的版本兼容性表,以确保您在客户端和服务器之间使用一组兼容版本。

© www.soinside.com 2019 - 2024. All rights reserved.