#OpenTok如何枚举会话中的流?

时间:2018-12-27 15:04:23

标签: opentok tokbox

我只订阅许多发布者之一,一次订阅一个(视频监视器)。因此,我最初打开所有订阅者,并在触发onconnected事件时,将每个订阅者存储在哈希表中(stream.connection.data保留ID)。我先订阅,然后退订并订阅下一个。但是,我不得不杀死onconnected事件处理程序,因此它们没有多次触发: Tokbox streamCreated being called same number of times client is called

现在,当新的参与者迟到(在删除事件处理程序之后)加入会话时,我不知道如何订阅其流,因为没有事件触发。我知道他们已经连接并且正在流式传输,因为我从他们的应用程序中收到一条消息,其中包含其流的ID。

因此,我需要一种方法来遍历会话中的所有内容,找到新的对象,并在轮到该人时订阅它。如何获取会话中的所有流并查看其连接ID?

1 个答案:

答案 0 :(得分:0)

此处是TokBox开发人员的传播者。

要了解客户端上的会话中的流数,我建议听以下会话事件:

  • streamCreated-有人开始在会话中发布时触发
  • streamDestroyed-当某人在会话中停止发布时触发。

我将创建一个如下所示的对象来记录会话中所有流的记录:

const streams = {};
session.on({
  streamCreated: event => {
    streams[event.stream.streamId] = event.stream;
  },
  streamDestroyed: event => {
    delete streams[event.stream.streamId];
  },
};

这将允许您像这样访问流对象并订阅:

const stream = streams['f39c6-ae02-100c-9727-b3bf2']; // please note that this is a random stream Id
const subscriber = session.subscribe(stream);

如果您想在服务器端上了解会话中的流数,可以使用Session Monitoring并收听相同的事件。