烧瓶插座向特定用户发出
我看到有关此主题的问题,但未概述特定代码。说我只想向第一个客户发出。
例如(在events.py中):
clients = []
@socketio.on('joined', namespace='/chat')
def joined(message):
"""Sent by clients when they enter a room.
A status message is broadcast to all people in the room."""
#Add client to client list
clients.append([session.get('name'), request.namespace])
room = session.get('room')
join_room(room)
emit('status', {'msg': session.get('name') + ' has entered the room.'}, room=room)
#I want to do something like this, emit message to the first client
clients[0].emit('status', {'msg': session.get('name') + ' has entered the room.'}, room=room)
如何正确完成?
谢谢
-
我不确定我是否了解向第一个客户端发出消息的逻辑,但是无论如何,这是这样做的:
clients = [] @socketio.on('joined', namespace='/chat') def joined(message): """Sent by clients when they enter a room. A status message is broadcast to all people in the room.""" # Add client to client list clients.append(request.sid) room = session.get('room') join_room(room) # emit to the first client that joined the room emit('status', {'msg': session.get('name') + ' has entered the room.'}, room=clients[0])
如您所见,每个客户都有自己的空间。该房间的名称是Socket.IO会话ID,您可以
request.sid
在处理来自该客户端的事件时获得该ID
。因此,您要做的就是sid
为所有客户存储此值,然后在emit
呼叫中使用所需的房间名称。