假设我们想要创建私人聊天室,用户可以在这里聊天 . 用户可以加入多个/ x组 . 在每种情况下,我都需要在服务器上创建一个唯一的组,并为这些用户订阅 . 哪种方法是推荐/更高效的方式:


[1]在服务器端,我创建了一个Room类,并为每个群聊添加新的房间 channels ,例如"chats/room-asdhqk1","chats/room-fwuefhw1","chats/room-awsdhqwd2" . 现在,某些指定用户可以加入此 Channels 并添加到组客户端列表中 . 在客户端,用户订阅了他们添加到的组渠道 .

问题:当用户在x通道中时,我需要在侧载后将他订阅到这些x通道 . 好:可以通过群组 Channels 名称向特定群组广播,并且订阅该 Channels 的所有用户将自动接收消息,因为他们已订阅了js部分内的 Channels .


[2]每个用户获得他的 own channel ,例如"notifications/user-1","notifications/user-2" ....在服务器端,我在Rooms Class(无通道)中创建组 . 通过将用户添加到房间列表的子列表中,可以将用户添加到特定房间 . 当他们彼此聊天时,服务器迭代群聊的订阅用户,并向每个用户通知 Channels 发送消息 - 这里根本没有群组 Channels - 仅针对每个用户 Channels .

问题:我无法轻松地广播消息,我需要遍历每个订阅用户并将消息发送到他的通知通道 . 另外,我不能在前端使用“发布”方法轻松地将消息发布到 Channels ,因为用户在不同的 Channels 中分开 .

好:最后,广播方法也会这样做:迭代订阅者列表 . 为了发送消息,我可以轻松实现与“发布”方法相同的RPC方法 - 查找组的订阅用户并将消息发送给他们 . 使用这种方法,用户不需要连接到客户端的x通道,他只有一个通道可以处理所有通道 .

(我知道对于第二种方法,需要推动器(例如zmq)) .


你有什么看法?我认为第二个更好,因为我不必在客户端订阅x-channels . 如果用户需要首先连接到例如,这将不具有性能 . 500 Channels .

问候 .