在Flask中从另一个类导入@socketio.on()

3 投票
1 回答
6270 浏览
提问于 2025-04-18 16:22

我正在用Flask和socketio制作一个新应用,代码简化后是这样的:

socketio = SocketIO(app)

@socketio.on('connect', namespace='/test')
def test_connect():
    print('Client connected')
    emit('my response', {'data': 'User Connected'}, broadcast = True)


if __name__ == '__main__':
    socketio.run(app, '0.0.0.0', 8080)

我不太确定怎么从另一个类导入“处理器:@socketio.on('connect', namespace='/test')”,这样我就不会让主类变得太复杂。

我想蓝图(Blueprints)可能是个解决办法,但我只找到如何用它们处理“路由”。我不确定这是否适用于socket。

有人能帮帮我吗?谢谢大家

1 个回答

3

你可以通过把 socketio.on() 函数移动到一个不同的模块来实现这个功能。你提到的是类,但其实这些更像是函数。构建你的应用程序的方式是将不同的部分分开,放到不同的模块或包里。

看看我创建的 这个例子,它展示了如何结构化一个使用 Flask-SocketIO 的 Flask 应用程序。

撰写回答