Flask socket io在其他类模块中不起作用

问题描述

我有一个Flask应用程序,该应用程序通过带有emit的websocket发送数据。

我的Python代码如下所示。我希望在某些情况下可以在AnotherClass中触发发射。

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',namespace='/audio')

当我从AnotherClass.send_data触发发射函数时,我得到以下日志,该消息说发射有效并发送数据,但是,客户端应用程序未接收到数据。相反,在MainClass.record中,相同的发射工作原理是当客户端发出某些东西时触发该事件。 (我插入了generate进行测试,在这种情况下可以正常工作,理想情况下,它不应处于记录功能中。)

cedb89204e80438da86361a97f6f1bac: Sending packet MESSAGE data 51-/audio,["send-data",{"data":{"_placeholder":true,"num":0}}]. cedb89204e80438da86361a97f6f1bac: Sending packet MESSAGE data <binary>

这是从上面的Python脚本接收发射的JavaScript代码

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");
    }
})

有人可以给我任何关于我做错事情的见解吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)