AnyChat技术支持论坛

标题: 关于BRAC_GetOnlineUser()方法获取不到在线用户列表的问题? [打印本页]

作者: lslizhonghua    时间: 2014-8-18 10:15
标题: 关于BRAC_GetOnlineUser()方法获取不到在线用户列表的问题?
版主:
   你好!
   我现在使用anychat webSDK V4.9开发视频会议过程中遇到如下问题:
  使用BRAC_GetOnlineUser()方法获取在线用户列表数据时出现如下问题:

  1)如果在OnAnyChatRoomOnlineUser(dwUserCount, dwRoomId)回调方法中调用BRAC_GetOnlineUser()方法则能正常的获取到在线用户列表数据;
  2)在OnAnyChatRoomOnlineUser(dwUserCount, dwRoomId)回调方法之外的其它任何地方调用BRAC_GetOnlineUser()方法获取在线用户列表取回来的结果均为空????
  请问是什么原因???该如何解决?
谢谢!

作者: 佰锐技术-高萌    时间: 2014-8-18 11:12
本帖最后由 佰锐技术-高萌 于 2014-8-18 11:17 编辑

您好,原因是需要收到OnAnyChatRoomOnlineUser之后,服务器才会将房间用户数据同步给客户端 。 也就是触发OnAnyChatRoomOnlineUser之后,调用BRAC_GetOnlineUser()才能获取到数据。


作者: lslizhonghua    时间: 2014-8-18 11:15
那么我如果在其他地方要获取在线用户数据,应该如何获取呢?
作者: admin    时间: 2014-8-18 11:18
您好:
1、建议升级SDK到最新版本V5.0;
2、BRAC_GetOnlineUser是最早期的API接口,表示获取当前房间内的在线用户列表,如果您希望获取大厅里面的用户列表,建议采用API:BRAC_GetUserFriends,使用方法可参考示例代码:AnyChatCallCenter,源代码位于SDK包src子目录下;
3、有关在线好友列表的详细说明请参考:http://bbs.anychat.cn/forum.php? ... &extra=page%3D1
作者: 佰锐技术-高萌    时间: 2014-8-18 11:18
lslizhonghua 发表于 2014-8-18 11:15
那么我如果在其他地方要获取在线用户数据,应该如何获取呢?

您好,收到OnAnyChatRoomOnlineUser之后调用BRAC_GetOnlineUser()就行了,不一定要在这个回调中

作者: 廖斌    时间: 2014-8-18 11:19
lslizhonghua 发表于 2014-8-18 11:15
那么我如果在其他地方要获取在线用户数据,应该如何获取呢?

进入房间成功后,OnAnyChatRoomOnlineUser是一定会触发一次的。在收到OnAnyChatRoomOnlineUser之后,就可以在其他地方获取了
作者: lslizhonghua    时间: 2014-8-18 11:23
你好,OnAnyChatRoomOnlineUser消息是在用户进入房间之后触发,你的意思是不是说,只要用户进入房间之后,在任何地方调用BRAC_GetOnlineUser()都能获取到在线用户数据?我实际使用的感受是只能在OnAnyChatRoomOnlineUser回调中调用BRAC_GetOnlineUser()才能获取到用户列表,应该怎么解决呢?
我现在采用的方式是通过将在OnAnyChatRoomOnlineUser回调中取到的在线用户保存到全局变量中的方法来实现,但是这样又会遭遇数据同步的问题,所以请给一个建议解决方法?谢谢!
作者: lslizhonghua    时间: 2014-8-18 11:28
廖斌 发表于 2014-8-18 11:19
进入房间成功后,OnAnyChatRoomOnlineUser是一定会触发一次的。在收到OnAnyChatRoomOnlineUser之后,就可 ...

按你的建议,在进入房间的时候,将在线用户信息保存下来,但是用户随时可能下线,什么时候去更新这个实时的在线数据呢?(因为文档中没有说用户下线的时候会同步在线用户到客户端)
作者: lslizhonghua    时间: 2014-8-18 11:34
好的,谢谢廖工的耐心解答,我再试试。
作者: 廖斌    时间: 2014-8-18 11:35
你的意思是不是说,只要用户进入房间之后,在任何地方调用BRAC_GetOnlineUser()都能获取到在线用户数据?

是的。
我实际使用的感受是只能在OnAnyChatRoomOnlineUser回调中调用BRAC_GetOnlineUser()才能获取到用户列表,应该怎么解决呢?

您是怎么测试的呢?可以用我们标准demo试试,进入房间后加个按钮,点击按钮获取一次。
我现在采用的方式是通过将在OnAnyChatRoomOnlineUser回调中取到的在线用户保存到全局变量中的方法来实现,但是这样又会遭遇数据同步的问题,所以请给一个建议解决方法?谢谢!

还有一种方法:设置一个全局的数组变量,在OnAnyChatRoomOnlineUser中获取一次。后续有用户离开或者进入房间会触发onAnyChatUserAtRoom,在 onAnyChatUserAtRoom中维护那个变量就行了。
作者: 廖斌    时间: 2014-8-18 11:37
lslizhonghua 发表于 2014-8-18 11:28
按你的建议,在进入房间的时候,将在线用户信息保存下来,但是用户随时可能下线,什么时候去更新这个实时 ...

用户上下线会触发onAnyChatUserAtRoom,然后数据就更新了,BRAC_GetOnlineUser()获取的就是最新的用户列表。




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3