7.房间
优质
小牛编辑
127浏览
2023-12-01
在许多应用中,有必要将用户划分为可以一并处理的几个子集。最好的例子是,一个包含多个房间的聊天应用,当用户收到他所在的房间的消息,而不会收到其他人所在房间的消息。Flask-SocketIO支持通过join_room()
和leave_room()
函数来支持房间的概念:
from flask_socketio import join_room, leave_room @socketio.on('join') def on_join(data): uername=data['username'] room=data['room'] join_room(room) send(username + ' has entered the room.',room=room) @socketio.on('leave') def on_leave(data): username = data['username'] room = data['room'] leave_room(room) send(username + ' has left the room.', room=room)
send()
和emit()
函数接收room
作为一个参数,将消息广播到所有在给定房间里的客户端。
所 有连接(到服务器)的客户端都被分配到一个房间,并且以连接的会话编号(session ID)命名这个房间的名称,这个会话编号由request.sid获得。一个既定的客户端可以加入任何一个房间,这个房间的名称可以是任何名称。当一个客 户端终止(与服务器的)连接,它将会从原来所在的房间里除名。这两个上下文无关的函数socketio.send()
和socketio.emit()
也会接受参数room
,把消息广播到这个房间里的所有客户端。
一旦所有的客户端被分配到一个自己的房间,为了将消息发送到一个唯一的客户端,会话编号可以作为参数room的值。