5.发送消息
优质
小牛编辑
132浏览
2023-12-01
之前章节定义的SocketIO活动处理函数可以凭借send()
函数和emit()
函数来连接客户端
接下来的例子是将接收到的消息退回到发送它们的客户端:
from flask_socketio import send, emit @socketio.on('message') def handle_message(message): send(message) @socketio.on('json') def handle_json(json): send(json, json=True) @socket.on('my event') def handle_my_custom_event(json): emit('my response', json)
注释一下,send()
和emit()
是怎样用在已命名和未命名的活动上的
当运作在有命名空间的活动中时,send()
和emit()
默认用在接下来的消息中。不同的命名空间可以被具体化到可选择的可选择的命名空间参数上:
@socketio.on('message') def handle_message(message): send(message, namespace='/chat') @socketio.on('message') def handle_my_sustom_event(json): emit('my response', json, namespace='/chat')
为了实现发送一个多参数的活动,发送一个元组:
def ack(): print('message was received!') @socketio.on('my event') def handle_my_custom_event(json): emit('my response', json, callback=ack)
使用回调时,JavaScript客户端使用回调函数在接收到的信息时回调。在客户端应用启用回调函数时,服务器会启用服务端相匹配的函数去响应。如果客户端没有回调任何值,这些将会作为服务端的响应被提供。
客户端的应用同样要求一个来自服务端的确认信息。如果服务端想为一次响应提供一个参数,它必须要在活动处理函数中被返回。
@socketio.on('my event') def handle_my_custom_event(json): # ... handle the event return 'foo', 'bar', 123 # client callback will receive these 3 arguments