6.广播

优质
小牛编辑
141浏览
2023-12-01

SocketIO另外一个非常有用的特性就是广播消息。Flask-SocketIO中,只要将broadcast = True这个可选参数加到send()和emit()中即可:

@socketio.on('my event')
def handle_my_custom_event(data):
  emit('my response', data, broadcast=True)

当一个消息以广播选项被开启的情况下被发出的时候,连接到这个命名空间的所有客户端都会收到这个消息。注意:广播的消息将不会被回调。

所有的例子表明,直到这个节点服务器才回复客户端发出的这个活动。但是另外的应用中,服务器需要成为消息的发起者。对于起源于服务器的活动而言,这个有利于发送通知到客户端,比如在后台线程中。socketio.send()socketio.emit()方法可以用来对所有的连接进行广播。

def some_function():
  socketio.emit('some event', {'data': 42})

注意:通过对send()和emit()的上下文的感知,socketio.send()socketio.emit()不是相同的函数。同样需要注意的是:以上的用法是没有客户端内容,所以假定broadcast=True,并且需要被具体化。