我正在为个人助理开发一个webapp。当用户连接到该站点时,我希望他们能够在他们在线时订阅他们的个人通知。我用socketio和flask socketio做了这个,我想我可以使用多线程,就像这样:
def update_loop():
while my_update_condition:
if my_update_exists:
socketio.emit("update", my_update)
@socketio.on("get_updates")
def get_updates(data):
'''Websocket thread for getting updates'''
socketio.emit("debug", {"value": "Starting update loop"})
update_thread = threading.Thread(target=update_loop)
update_thread.start()
但是我使用此策略的代码会在线提供所有用户的更新。使用flask socketio,我如何安全地实现私人聊天?更新中的数据不是超敏感的,但是,由于它是用户设置的通知,因此通常是个人的。谢谢。
注意:在我对此的研究中,我发现了一些使用socketid
向特定发件人发送消息的内容,但我找不到使用flask-socketio的示例实现。
答案 0 :(得分:1)
默认情况下,socketio.emit()
函数会向所有用户广播。要向单个用户发送消息,您必须将房间设置为所需用户的房间,该房间以用户的会话ID命名。这是一个例子:
def update_loop(sid):
while my_update_condition:
if my_update_exists:
socketio.emit("update", my_update, room=sid)
@socketio.on("get_updates")
def get_updates(data):
'''Websocket thread for getting updates'''
socketio.emit("debug", {"value": "Starting update loop"})
update_thread = threading.Thread(target=update_loop, args=(request.sid,))
update_thread.start()