没有得到streamCreated事件,页面的CPU使用率达到100%

时间:2013-07-10 21:37:37

标签: opentok tokbox

每当我在Chrome中允许网络摄像头访问作为设置多方或p2p会议的一部分时,我希望得到一个未通过的streamCreated通知。我的相机打开,页面的“谷歌浏览器渲染器”达到100%的CPU使用率。当我暂停流的执行时,我发现执行是在TB.min.js内部的某个地方。以下是我的代码的相关部分:

void meetingInProgress(info) {
   var session = TB.initSession(info.sessionId);
   session.connect(info.apiKey, info.token);

   session.addEventListener("sessionConnected", function(e) {
      console.log("Connected to session");

      subscribeToStreams(session, e.streams);
      session.publish("selfview", { name: name });
   });

   session.addEventListener("streamCreated", function(e) {
      console.log("New stream");
      subscribeToStreams(session, e.streams);
   });
}

var subscribeToStreams = function(session, streams) {
   var selfId = session.connection.connectionId;

   console.log('Subscribing to streams, self id:', selfId);
   console.log('No. of streams:', _.size(streams));

   _.forEach(streams, function(s) {
      console.log('Stream id: ', s.connection.connectionId);
      if (s.connection.connectionId == selfId) {
         console.log('Toggling');
         $("#selfview").toggle();
      }
      else
         session.subscribe(s, addViewport(), { width: 640, height: 480 });

   });

   console.log('Done subscribing to streams...');
}

在我看来,如果发布者div元素被隐藏,则接收streamCreated事件时会出现问题。当用户实际批准使用相机时,我希望只显示发布者div面板。当我禁用此div可见性切换时,事情似乎更好。

1 个答案:

答案 0 :(得分:2)

不幸的是,在最新版本中,这将在隐藏发布者时发生。如果你仍然想要隐藏它,现在最好的选择是使它成为1x1像素,并将其绝对定位在屏幕的-1,-1位置。