如何等待传递给Flask SocketIO';s emit()?
如何等待传递给Flask SocketIO';s emit()?,flask,callback,socket.io,blocking,flask-socketio,Flask,Callback,Socket.io,Blocking,Flask Socketio,Flask SocketIO中是否有一个阻塞/同步emit('event',callback)函数,该函数在返回之前等待传递给它的回调 或——是否有一种方法可以直接调用@socketio.on('event')处理程序中的回调,而不是从该处理程序中简单地返回 这就是我的具体情况: 服务器 @socketio.on('serverGiveData')) def处理程序(msg): emit('workerGiveData',msg,callback=server\u callback) 返回#当
Flask SocketIO
中是否有一个阻塞/同步emit('event',callback)
函数,该函数在返回之前等待传递给它的回调
或——是否有一种方法可以直接调用@socketio.on('event')
处理程序中的回调,而不是从该处理程序中简单地返回
这就是我的具体情况: 服务器
@socketio.on('serverGiveData'))
def处理程序(msg):
emit('workerGiveData',msg,callback=server\u callback)
返回#当服务器_callback()被回调时
def服务器_回调(数据):
打印('从工作者接收的数据')
#这里我想调用client_callback(),即。
#在调用此服务器回调()之前,我不希望handler()返回
工人
def处理程序(args,回调);
回调(数据)
socketIO.on('workerGiveData',handler)
(我知道当工作人员以
browser\u callback()
我希望避免这种混乱。)Socket.IO协议是基于事件的,而不是基于请求/响应的。我建议您不要使用回调,这些回调用于快速确认已收到事件,而不是在完成某些工作后提供结果
请尝试使用新事件替换回调:
+-----------------+ +----------------------+ +----------------------+
| Browser | emit('serverGiveData’) | Flask | emit('workerGiveData', | Worker |
| (webapp, JS) | | web server | server_callback) | (Python program) |
| | +------------------------> | | +--------------------> | |
| | | | | |
| socket.io 1.7.3 | emit(‘dataForBrowser’) | Flask-SocketIO 2.8.2 | data |socketiIO-client 0.7.2|
| | <------------------------+ | | <--------------------+ | |
| | | | | |
+-----------------+ +----------------------+ +----------------------+
+--------------+-------------------------++----------------------+
|浏览器| emit('serverGiveData')| Flask | emit('workerGiveData',| Worker|
|(webapp,JS)| | web服务器|服务器|回调)|(Python程序)|
| | +------------------------> | | +--------------------> | |
| | | | | |
|socket.io 1.7.3 | emit('dataForBrowser')| Flask SocketIO 2.8.2 | data | SocketIO客户端0.7.2|
| |
+-----------------+ +----------------------+ +----------------------+
| Browser | emit('serverGiveData’) | Flask | emit('workerGiveData', | Worker |
| (webapp, JS) | | web server | server_callback) | (Python program) |
| | +------------------------> | | +--------------------> | |
| | | | | |
| socket.io 1.7.3 | emit(‘dataForBrowser’) | Flask-SocketIO 2.8.2 | data |socketiIO-client 0.7.2|
| | <------------------------+ | | <--------------------+ | |
| | | | | |
+-----------------+ +----------------------+ +----------------------+