-
创建时间
20年10月30日
-
最后回复
20年11月16日
- 27
回复
- 122
浏览
- 3
用户
- 7
链接
您可以把 onInvited 的 client 的相关信息也打印出来,两条记录的 client 是不同的,应该分别是 customer1 和 customer6 。
onInvited(AVIMClient client, AVIMConversation conversation, String invitedBy)
这个回调的三个参数的意思是:谁(client)被谁(invitedBy)加入到了会话(conversation)里。
两次的client 确实不一样 ,但是为什么两次的invitedBy都是一样的,而且为什么会触发两次呢?我明明只有一个创建了会话
意思是发起会话的和接收会话的都会出发这个回调函数是嘛,然后邀请人其实就是发起人
当一个 ID 在多个设备同时在线时,需要数据同步;这个设计就是为了满足这个场景。
不对呀,这个是我测试用的,id肯定只有一个,我还是疑问为什么回调了两次。我后台设置了client,一个创建会话,一个不创建会话。
可能是我解释不够清晰,所以以 client-id-1 以及 client-id-2 为样例详细说明一下:
client-id-1 创建一个成员为 client-id-1 以及 client-id-2 的普通会话后,client-id-1 和 client-id-2 都会接收到 conversation#onInvited 事件。
client-id-2 接收到 conversation#onInvited 事件应该很好理解,指它被 client-id-1 邀请加入到会话中;让您疑虑的地方是 client-id-1 也接收到了 conversation#onInvited 事件。
client-id-1 作为会话的创建者,也接收到 conversation#onInvited 事件,这个设计的主要目的是为了解决「同一个 ID 在多设备保持在线时,需要同步事件或数据」这一需求。即当 client-id-1 在设备 A 以及设备 B 上同时在线时,设备 A 的 client-id-1 创建一个会话后,设备 B 的 client-id-1 需要知道或同步这一操作,所以就会出现会话的创建者也接收到 conversation#onInvited 事件,这里的行为乍一看确实有点难理解,甚至有些奇怪,但它确实是为了特定需求而设计的。
而 client-id-1 只在一台设备登录时也接收到了事件,是为了兼容历史包袱而保留的。接口的行为有冗余,您可以自行过滤掉不需要响应的事件。
我用的java sdk的maven依赖如下
cn.leancloud
storage-core
6.5.12
cn.leancloud
realtime-core
6.5.12
根据你们的例子,回调函数有问题
我想问一下,是不是我的maven依赖的版本,跟你们官网的文档不一致
你好,这里是文档有误,addMembers 对应的回调不是 AVIMConversationCallback,正确应该是 AVIMOperationPartiallySucceededCallback,我们稍后会更新文档:
conversation.addMembers(Arrays.asList("Mary"), new AVIMOperationPartiallySucceededCallback() {
@Override
public void done(AVIMException e, List<String> successfulClientIds, List<AVIMOperationFailure> failures) {
}
});C 可以查到这个会话的所有历史聊天记录,包括 A 和 B 的聊天记录。
就正常查询聊天记录就可以: https://leancloud.cn/docs/realtime-guide-beginner.html#hash334909345
B已经被移除会话,就无法查询会话记录了。
只要被移除会话,就没有查询聊天记录的权限了。
后端不会收到。
- 客户端主动断开连接后,会变为下线状态。例如网络不通导致连接断开。
- 客户端指定了设备的登录环境(tag)并触发登出条件,可以参考该文档: https://leancloud.cn/docs/realtime-guide-intermediate.html#hash502615897
- 服务端主动下线客户端,可以参考该文档: https://leancloud.cn/docs/realtime_rest_api_v2.html#hash747122000
您好,再请教一个问题。假如前java后端和端登录了一个client(没有加标签,是同一个client)。这个时候前端用户关闭浏览器,这个时候前端登录的client应该会变成下线状态吧,这个时候client的状态是在线还是离线?我的java后端怎么监听到下线事件呢?
是的。
我们服务提供上下线通知的 hook 接口,详情见此文档: https://leancloud.cn/docs/realtime-guide-systemconv.html#hash-2017196884
另外,我们也提供了一篇查询客户端上下线状态的使用范例:
https://leancloud.cn/docs/realtime-guide-onoff-status.html
服务端这样写就能监听到客户上下面事件吗?java 后台怎么去写一个HOOk方法?
https://leancloud.cn/docs/leanengine_cloudfunction_guide-java.html
可以参考我们的「云函数开发指南 · Java」文档👆
您是对哪一步有疑问呢?是对云引擎使用有疑问吗?
您是指在您自己的服务端实现 LeanCloud 即时通讯的 Hook 函数?
云引擎(LeanEngine)是 LeanCloud 推出的服务端托管平台。提供了多种运行环境(Node.js, Python 等)来运行服务端程序。你只需要提供服务端的业务逻辑(网站或云函数等),而服务端的多实例负载均衡,不中断服务的平滑升级等都由云引擎提供支持。
云缓存(LeanCache)使用 Redis (3.0.x)来提供高性能、高可用的 Key-Value 内存存储,主要用作缓存数据的存储,也可以用作持久化数据的存储。
云缓存是云引擎服务的一个子功能。
使用方面,建议您参考我们提供的使用文档:
https://leancloud.cn/docs/leanengine_cloudfunction_guide-java.html









