用户、群组信息及聊天室详细信息管理维护和集成方式

融云提供的即时消息传输服务,不在 App 之外建立并行的用户体系,具体的用户、群组信息及聊天室详细信息均需要在应用服务器进行维护并给端上提供查询、修改等服务,最后再及时与融云进行同步,本文给出一种集成处理方式。
发布时间: 2017-11-22 17:51

回答:

先列出几个必读的文档:

1:架构介绍 http://www.rongcloud.cn/docs/quick_start.html#framework 

2:IM Server提供的相关 API(主要是用户和群组、聊聊天室部分) http://www.rongcloud.cn/docs/server.html#message_sync 

3:Web 集成引导 https://rongcloud.github.io/websdk-demo/integrate/guide.html 


在使用融云服务时和用户、群组、聊天室相关的逻辑:

1:融云需要发送消息相关的 用户、群组、聊天室信息,具体如下:

      应用服务器维护用户所有信息,请求融云注册用户(提供 id、name、portrait),id 用于消息收发,name 用于 push,此接口同时提供了刷新方法

      应用服务器维护群组及成员信息,也就是说,群的创建、群成员的维护都需要在应用服务器完成后同步到融云,但只同步群组(群 id)及群成员信息(成员 id),两种 id 同样用于消息的收发,消息发送给 群组id,群成员可以获取对应消息


2:用户 创建和加入聊天室 是在端上调用 sdk 相应方法完成,具体参考 https://rongcloud.github.io/websdk-demo/api-test.html 


3:融云通过链接服务器、消息收发等携带相关 id 到各端,端上通过 id 请求应用服务器获取详细信息(用户名、头像、群组名称、群头像、群成员信息以及其他业务需要的职位、等级等数据)

      用户使用 token 链接融云,成功后返回当前用户的 id,可以获取登录用户的详细信息

      接收到消息时,消息体里有 conversationType、targetId 和 senderUserId,单聊(conversationType = 1)可以通过 userId =  senderUserId 获取发送者详细信息,群聊(conversationType = 3)可以通过 groupId = targetId 获取群组信息,可以直接返回群组及成员信息,也可以分开请求获取,具体取决于接口设计。


4:收到聊天室消息 (conversationType = 4),可以通过 senderUserId 得知发送者 id,通过 targetId 得知聊天室 id,然后可以获取聊天室成员列表,进而处理相应的用户信息逻辑


开发实现参考:

    Web 用户信息实现参考:https://github.com/rongcloud/websdk-demo/blob/master/user-group.js 

    Android 用户信息文档:http://www.rongcloud.cn/docs/android.html#user_info

    iOS 用户信息文档:http://www.rongcloud.cn/docs/ios_imlib.html#user_info