【问题标题】:How do I emit to a specific client within a namespace, within a room?如何在房间内的命名空间内向特定客户端发出?
【发布时间】:2020-08-22 02:37:43
【问题描述】:
我有一个使用 flask-socketio 的烧瓶服务器,以及作为仪表板的 Angular 前端,以及几个客户端。仪表板(也是客户端)连接在不同的命名空间(“/dashboard”)上。同样,客户端也连接到不同的命名空间(“/clients”),并分配到各自的房间(按国家/地区)。
现在我想在客户端命名空间的房间内向特定用户(使用 request.sid)发出事件。
P.S:这是我第一次在这里提问,所以请原谅方法:D
【问题讨论】:
标签:
python
sockets
flask
socket.io
flask-socketio
【解决方案1】:
所以emit()函数有一个叫做room的参数,你实际上可以将request.sid传入
emit('some event', some_data, room=request.sid)
根据应用程序的复杂性,创建自己的方法来映射用户所在的房间以及哪些套接字属于连接的用户可能是理想的选择。在我的情况下,房间中的用户会收到不同的消息,我需要这样做。
这里只是一个例子,展示概念
rooms = {
room1: {
user1 : {
username: "rickybobby",
sid: 12ed0u9j1d9a08hy409jdsdf
}
},
roomN : {...userN}
}