#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 并监听相同的事件。
我只订阅了众多发布商中的一个,一次订阅一个(视频监视器)。因此,我最初打开所有订阅者,当触发 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 并监听相同的事件。