极光 IM WEB 无法退出自己加入的聊天室

标签: #<Tag:0x00007f657b2a1768> #<Tag:0x00007f657b2a1600> #<Tag:0x00007f657b2a14c0>

sdk: web

我的使用流程:
1.初始化
2.登录
3.进入聊天室:jim.enterChatroom
4.进入聊天室后可自动同步历史消息
5.正常使用
6. 用户离开时,退出聊天室:jim.exitChatroom

遇到的问题:

可能因为某些原因,用户在上一次离开聊天室时,没有正常退出聊天室,当下一次用户重新进入聊天室时,执行到第三步时,加入聊天室会提示加入失败,因为此时用户已在当前聊天室,为了获取到聊天室的历史消息,需要退出当前聊天室,并再次进入。但是此时没法退出聊天室,一直失败,错误码:880001

简短描述: 当用户加入一个自己已在其中的聊天室,会加入失败(正常),想要退出当前聊天室并重新加入,调用 api 不能退出,错误码:880001

jim.enterChatroom: member has in the chatroom -> jim.exitChatroom: chat room missing error code

image

你使用的 web SDK 的版本号是多少?

你是调用进入聊天室和退出聊天室两个 API 之间,间隔是多久。

sdk: jmessage-sdk-web.2.6.0

调用两个 api 的间隔不是主要问题,如上图中我在 console 中的手动调用示例,间隔至少是几秒以上,
实际代码中都是 promise 的回调。

请问你这个用户退出的是否是 他自己创建的聊天室?即该用户是否是该聊天室的拥有者
owner_username (必填)聊天室拥有者

这个我不是很确定,我一会儿检查下。假设这个用户是这个聊天室的拥有者,那么他就不能退出他所创建的聊天室是吗?我的目的是需要同步历史消息。目前的做法是当用户离开页面时,自动帮用户退出当前聊天室,下次再加入聊天室成功后就可以自动触发加载历史消息。请问还有其他的实现吗?如果遇到像我这种情况,如果当前用户是当前聊天室的创建者,他就不能退出这个聊天室,那么他刷新页面或者下次再进入聊天室时候,就会是 member has in the chatroom,不会触发进入聊天室成功并且自动同步历史消息的操作。这种情况该如何处理?

是的,这种情况下是不能退出的。
你们可以创建一个管理员之类的身份,专门创建聊天室,不用分配给用户来使用的。

好吧,后面我们会使用管理员来创建聊天室。
另外,关于同步历史消息的问题。我的使用方式是否是正确的:用户离开,自动处理退出当前聊天室操作(owner 除外),下次加入当前聊天室成功后自动同步历史消息。我没有在文档中找到其他的 api 可以自己手动同步历史消息,请问下还有其他更好的实现方式吗?

如果 owner 不能退出聊天室的话,如果不能手动同步历史消息,owner 刷新页面可能就看不到历史消息了。。,请问如何处理?

谢谢

客户端没有什么方案,聊天室的概念就是不保存离线保存历史信息的概念的
https://docs.jiguang.cn/jmessage/client/android_sdk/chatroom/

https://docs.jiguang.cn/jmessage/server/rest_api_im_report_v2/#_5
服务端的 API 可以获取下历史信息

好的,谢谢。