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

#OpenTok how enumerate streams in a session?

我只订阅了众多发布商中的一个,一次订阅一个(视频监视器)。因此,我最初打开所有订阅者,当触发 onconnected 事件时,我将每个订阅者存储在散列 table 中(stream.connection.data 保存 ID)。我订阅了第一个,然后退订并订阅了下一个。但是,我不得不终止 onconnected 事件处理程序,这样它们就不会多次触发: Tokbox streamCreated being called same number of times client is called

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

所以,我需要一种方法来遍历会话中的所有流,找到新的流,并在轮到那个人时订阅它。如何获取会话中的所有流并查看它们的连接 ID?

此处为 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 并监听相同的事件。