Flask-SocketIO 事件不起作用

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

我目前正在使用 SocketIO 开发 Flask Web 应用程序。基础知识有效,但是当我创建自定义事件(参见示例)时,服务器不响应它。这是因为我只是使用 app.run() 而不是 socketio.run() 吗?

Python 文件(片段):

app = Flask(__name__)
socket = SocketIO(app)

@socket.on('test_event')
def handle_test_event(data):
    rec_data = data['data']
    print(rec_data)

app.run(debug=True)

前端(片段):

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.7.1/socket.io.js"></script>
<script>
    var socket = io.connect('http://' + document.domain + ':' + location.port);

    window.onload = function() {
        console.log("Called onload");
        socket.emit('test_event', {'data': 'Hello World'});
    }
</script>

我的事件是使用 socket.emit() 在客户端发起的,没有触发服务器上相应的事件处理程序(@socketio.on(...))。我已经检查了我的连接和其他内容,但我无法弄清楚为什么服务器没有接收和处理该事件。

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

您正在创建

socket = SocketIO(app)
但没有以任何方式运行它。相反,您运行
app
。事实证明,您启动的是应用程序本身,而不是套接字。

您需要使用

socket.run(app)
来运行应用程序并监听事件

https://flask-socketio.readthedocs.io/en/latest/getting_started.html#initialization

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