Flask套接字io无法从其他类模块工作

Flask套接字io无法从其他类模块工作,flask,websocket,socket.io,flask-socketio,emit,Flask,Websocket,Socket.io,Flask Socketio,Emit,我有一个Flask应用程序,它使用emit通过websocket发送数据 我的Python代码如下所示。我希望在某些条件下在另一个类中触发emit class MainClass: def __init__(self): app = Flask(__name__) app.secret_key = 'any random string' self.socketio = SocketIO(app, logger=True, binary=Tr

我有一个Flask应用程序,它使用emit通过websocket发送数据

我的Python代码如下所示。我希望在某些条件下在另一个类中触发emit

class MainClass:
    def __init__(self):
        app = Flask(__name__)
        app.secret_key = 'any random string'
        self.socketio = SocketIO(app, logger=True, binary=True, engineio_logger=True,
                                 always_connect=True, async_mode='eventlet')
        self.socketio.init_app(app, cors_allowed_origins='*')
        self.socketio.on_event('on-record', self.record, namespace='/audio')
        self.AC = AnotherClass(socketio=self.socketio)
        
    def run_app(self):
        self.socketio.run(self.app, debug=True, port=8000)

    def record(self, some_other_data):
        # This function gets triggered when client emit
        # I inserted the following emit to test if this works
        self.socketio.emit('send-data', {'data': data}, namespace='/audio')
        
       

class AnotherClass:
    def __init__(self, socketio):
        self.socketio = socketio
 
    def send_data(self, data):
        self.socketio.emit('send-data', {'data': data}, namespace='/audio')
当我从另一个class.send_数据触发emit函数时,我会得到以下日志,说明emit工作并发送数据,但是客户端应用程序不会接收数据。相反,相同的emit在MainClass.record中起作用,这是当客户端发出某些东西时触发的事件。(我插入了emit to test,在这种情况下可以工作,理想情况下,它不应该在record函数中。)


有人能告诉我我做错了什么吗?

据我所知,你发布的代码没有任何问题。实际上没有办法检测哪个类正在调用
emit()
,因此,如果原始类之外的所有其他东西都是相同的,那么这应该是有效的。我知道您肯定这不是客户机问题,但仍然应该在问题中添加客户机代码,并添加工作案例。在某个地方一定有你没有考虑到的差异。谢谢你的建议,这绝对是有意义的。我将添加工作代码和客户代码。我已经用工作案例和客户代码更新了问题。如果你能对更新后的代码有所了解,那就太好了,因为我可能忽略了代码中的某些内容。仍然没有什么明显的错误。我相信你仍然没有准确地解释这两者之间的区别。例如,虽然您提供了有关如何触发工作emit的详细信息,但在辅助类中没有提到emit,并且您显示的代码也没有调用该类。
cedb89204e80438da86361a97f6f1bac: Sending packet MESSAGE data 51-/audio,["send-data",{"data":{"_placeholder":true,"num":0}}]. cedb89204e80438da86361a97f6f1bac: Sending packet MESSAGE data <binary>
var socketio = io.connect('0.0.0.0:8000' + '/audio', {transports: ['websocket']});

socketio.on("send-data", function(data) {
    // Log when client receives the data from server-side
    console.log("Data received");
    }
})