wildfirechat / im-server

即时通讯(IM)系统
http://docs.wildfirechat.cn
Other
7.78k stars 1.77k forks source link

希望增加一个用户所在聊天室id列表的api #665

Closed Togeth3r closed 7 months ago

Togeth3r commented 8 months ago

感觉聊天室用在直播间很合适,就一直在直播间用着。 最近有个场景需求,因为app端和小程序端是能同时登录的,同时进入直播间。 现在要做一个不可以同时进入直播间的功能,或者一端进入直播间后将其余进入直播间的客户端全退出来,感觉有这么一个api挺好的。

imndx commented 8 months ago

目前客户端有临时方案可实现: 用UserSetting实现,UserSetting跨端支持,并且是实时的。

大概实现步骤是这样子的:

  1. 定义一个新的UserSettingScope,比如:currentChatRoomSetting = 1002
  2. 定义UserSettingkeyvalue ,比如:key = currentChatRoomvalue = ${当前 chatRoomId} + ${当前时间戳}
  3. 进入聊天之前,先调用getUserSetting,获取当前聊天室相关设置,并检查,以判断是否允许进入新的聊天室
  4. 进入聊天之后,每分钟调用setUserSetting刷新时间戳,目的是防止杀进程等异常退出聊天室,导致聊天室设置有值,但不知道是否是合法的,每分钟刷新时间戳之后,就可以根据时间戳判断是否合法,2 分钟之前的聊天室设置,就认为是不合法的,表示当前并没有其他端在聊天。
heavyrain2012 commented 8 months ago

最新提交做了2处修改,一个是添加了一个server api,可以获取一个用户在那个聊天室中。另外一个修改是添加了一个配置,当一个端在聊天室中时,如果另外一个端加入聊天室是把之前的踢掉还是返回错误。这2个修改应该能帮你们解决这个问题

Togeth3r commented 8 months ago

非常感谢,相信野火团队能取得更大的成就,蒸蒸日上。