首页 > 解决方案 > 如何在房间内的命名空间内向特定客户端发出?

问题描述

我有一个使用 flask-socketio 的烧瓶服务器,以及作为仪表板的 Angular 前端,以及几个客户端。仪表板(也是客户端)连接在不同的命名空间(“/dashboard”)上。同样,客户端也连接到不同的命名空间(“/clients”),并分配到各自的房间(按国家/地区)。

现在我想在客户端命名空间的房间内向特定用户(使用 request.sid)发出事件。

PS:这是我第一次在这里问问题,所以请原谅方法:D

标签: pythonsocketsflasksocket.ioflask-socketio

解决方案


所以 emit() 函数有一个叫做 room 的参数,你实际上可以将 request.sid 传递给它

emit('some event', some_data, room=request.sid)

根据应用程序的复杂性,创建自己的方法来映射用户所在的房间以及连接的用户属于哪些套接字可能是理想的。在我的情况下,房间中的用户会收到不同的消息,我需要这样做。

这里只是一个例子,展示这个概念


rooms = {
    room1: {
           user1 : {
                   username: "rickybobby",
                   sid: 12ed0u9j1d9a08hy409jdsdf
           }
    },
    roomN : {...userN}
}

推荐阅读