You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask应用与Flask-Socket.io连接失败问题求助

问题根源与解决方法

1. SocketIO未与Flask应用实例正确绑定

你的代码里SocketIO实例没有关联到Flask应用,导致Flask无法识别/socket.io/路由。需要在应用创建流程中完成SocketIO与Flask实例的绑定。

修改后的__init__.py代码:

from flask import Flask
from flask_socketio import SocketIO
import logging

logger = logging.getLogger(__name__)

# 先初始化SocketIO实例
socketio = SocketIO(logger=True, engineio_logger=True)  

def create_app(test_config=None):
    app = Flask(__name__, instance_relative_config=False)
    # 其他应用配置代码...
    
    # 将SocketIO与当前Flask应用绑定
    socketio.init_app(app)
    return app

@socketio.on('message')
def handle_message(data):
    logger.debug('received message: ' + data)

if __name__ == '__main__':
    app = create_app()
    socketio.run(app, host='0.0.0.0', port=5000, debug=True)

2. 错误使用flask run启动应用

flask run启动的是标准WSGI服务器,无法加载SocketIO所需的WebSocket处理逻辑和特殊路由。必须使用SocketIO提供的socketio.run()方法启动应用。

修改后的run.sh脚本:

#!/bin/bash
export FLASK_DEBUG=True
# 直接运行应用模块,触发__main__中的socketio.run逻辑
python -m rocket_launcher

3. 前端事件名不匹配(可选优化)

你前端代码发送的是my_event事件,但后端仅监听了message事件,建议统一事件名以确保交互正常:

var socket = io()
socket.on('connect', function() {
    socket.emit('message', {data:"I'm connected!"});
});

验证效果

修改后启动应用,你会看到SocketIO的初始化日志输出,前端能成功建立连接,/socket.io/路径的404错误会消失。

内容的提问来源于stack exchange,提问作者user1045680

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:02:44