我有一个以ReactJS为前端的Flask应用程序设置。我的应用程序的结构基于miguelgrinberg的Flask-SocketIO-Chat应用程序。因此,socketio的初始化和Flask应用程序的蓝图与上述存储库完全相同,例如:
from flask import Flask
from flask_socketio import SocketIO
socketio = SocketIO()
def create_app(debug=False):
"""Create an application."""
app = Flask(__name__,static_folder='../../static/dist',
template_folder='../../static')
app.debug = debug
app.config['SECRET_KEY'] = 'gjr39dkjn344_!67#'
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
socketio.init_app(app)
return app
因此,如果查看 Flask-SocketIO-Chat 存储库,则events.py
目录中有app/main/
,其中包含与SocketIO相关的所有工作。这样,我就有了向两个名称空间发出消息的代码。当我向/
端点发送消息时,它可以正常工作,但是当我尝试向另一个选项卡中打开的/analysis
端点发送消息时。发射消息没有通过。令人惊讶的是,如果我从客户端(ReactJS)发出消息,则能够在服务器(Flask)中捕获它。
这是我在客户端连接到SocketIO的方式:
import io from 'socket.io-client';
let socket = io('http://' + document.domain + ':' + location.port + '/analysis');
感谢您对此问题的任何投入。请让我知道是否需要其他信息。
-Tayab Soomro。