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
相关产品推荐
相关产品推荐

