我在会话期间多次一对一地调用客户端,并且主机上调用了streamCreated
事件。挂断电话后,我退订,客户端也取消发布。但是,当我再次调用客户端时,streamCreated
事件在主机端被调用了两次。我多次调用客户端3、4、5等,并且streamCreated
事件触发的次数与调用客户端的次数相同。例如,在我第七次致电客户时,streamCreated
被致电7次!尽管streamDestroyed
被调用,但似乎并没有真正破坏流。
在客户端,我非常渴望尝试和取消发布:
clientSession.unpublish(clientPublisher, handleError);
clientPublisher.stream.destroy();
clientPublisher.destroy();
clientPublisher = null;
在主机方面,我还尝试确保订阅者已被破坏:
clientSession.unsubscribe(clientSubscriber);
clientSubscriber.destroy();
clientSubscriber = null;
问题是当我打开一个具有多个客户端的视频监视器,并让每个客户端发布时都没有音频。但是,我仍然可以听到我拜访的客户端……就像他们的原始流仍然存在一样。我在做什么错了?
答案 0 :(得分:0)
每次拜访此人时,我都在使用:
clientSession.on('streamCreated', function (event) {
clientSubscriber = clientSession.subscribe(event.stream, vid, {
...
因此,每次我调用一个客户端时,它都会创建一个新的事件处理程序。为解决此问题,我与客户端断开连接时添加了以下代码。
clientSession.unsubscribe(clientSubscriber);
clientSession.off();
那杀死了事件处理程序,现在一切正常。