【发布时间】:2020-04-25 08:30:52
【问题描述】:
我正在使用agora.io在android中实现1对1视频通话,我想知道:
是否可以在通道上设置超时,以便在一段时间后(例如 1 小时)自动关闭。
如果没有,可能是调用 agora.io 的 API 来强制关闭频道。
我需要这个来确定用户是否离开频道,或者如果一个人离开而另一个人在没有真正使用它的情况下保持频道打开,我需要关闭未使用的频道...
【问题讨论】:
标签: agora.io
我正在使用agora.io在android中实现1对1视频通话,我想知道:
是否可以在通道上设置超时,以便在一段时间后(例如 1 小时)自动关闭。
如果没有,可能是调用 agora.io 的 API 来强制关闭频道。
我需要这个来确定用户是否离开频道,或者如果一个人离开而另一个人在没有真正使用它的情况下保持频道打开,我需要关闭未使用的频道...
【问题讨论】:
标签: agora.io
没有预定关闭频道的功能。
但是 Agora 有一个功能可以在有人离开频道后处理 callblack 事件。
当用户离开频道几秒钟后,Agora 会发送广播消息。
其他用户通过回调消息接收到有人离开频道的消息,然后可以通过事件处理程序('on')强制关闭频道。
请参阅此文档。
https://docs.agora.io/en/Voice/API%20Reference/web_ng/interfaces/iagorartcclient.html#on
【讨论】:
在 Agora 中,频道是短暂的,当客户端应用程序使用joinChannel 方法时,它会创建一个加入频道的请求,如果该频道不存在,Agora 的平台将创建该频道并将用户添加到其中。当第二个客户端使用相同通道名称的joinChannel 方法时,平台会将它们连接到同一个通道中。当所有用户离开频道时,频道会保持打开几秒钟,然后 Agora 平台会自动关闭/销毁频道。
有几种不同的方法可以实现您所描述的功能,其中通话只持续一段时间,以及如何防止用户在通话中逗留。
我将从定时通话开始。在您的应用/客户端中,您可以创建一个计时器,在 XX 分钟后调用 Agora SDK 的 leaveChannel 方法,从而强制频道具有一定的生命周期。
如果您不希望在客户端上有此功能,您可以创建一个服务器来跟踪两个人何时加入频道,并使用Kicking Rule within the Agora RESTful API。您的服务器将实现计时器,然后使用踢规则清除通道。使用踢球规则时,您不必指定用户,您可以只指定一个频道,这会将所有用户从频道中删除。
注意:使用仅指定频道的踢球规则时,请注意您设置的时间量,因为这会阻止所有用户加入该频道。
为了解决滞留用户,一种方法是使用userJoined 回调来统计通话中的用户,并使用userLeft 回调来检查是否所有其他用户都离开了频道。如果用户是频道中的最后一个用户,您可以在客户端调用leaveChannel。
另一种方法是使用 Agora RTM 作为更强大的信令层。当两个用户加入频道时,您可以使用数据频道进行同步,或者使用 RTM 的 userLeft 回调和 getChannelMemberCount 来计算频道中的客户端总数,并更好地控制用户的连接方式。
【讨论】: