reactjs - Opentok React:如何调用OTPublisher的Publisher对象的getStats方法?
问题描述
我正在尝试使用我已经存在的 tokbox 会话和发布流来获取特定时间的统计信息(单击按钮等)。
tokbox.com 上的主要文档对此进行了讨论,提供了一种方法,但使用react tokbox无法访问
这是代码的样子。首先是创建会话
startTokBox = (sessionData) => {
const { webrtc_api, webrtc_session_id, webrtc_token } = sessionData.webrtc_details || {};
this.tokbox = createSession({
apiKey: String(webrtc_api),
sessionId: webrtc_session_id,
token: webrtc_token,
onStreamsUpdated: (streams) => {
this.setState({ streams });
},
});
}
然后在 jsx 中使用它
<OTPublisher
session={this.tokbox.session}
properties={{
publishAudio: this.state.audio,
publishVideo: false,
...this.publisherProperties,
}}
ref={this.otPublisher}
eventHandlers={{
streamCreated: this.onMyStreamCreated,
}}
onError={this.onError}
/>
文档要求调用 getPublisher 方法来获取 Publisher 实例以使用 Publisher 方法(我想通过它可以使用 getStats ),但我不知道该怎么做。任何帮助将非常感激。
PS:我真的不想使用opentok-network-test并创建一个新实例只是为了测试
解决方案
好的,我能够解决这个问题。如果其他人面临同样的问题,我将问题留在这里。
你所做的是,除了上面的代码,你不要忘记在构造函数中初始化引用(就像我做的那样)
constructor(props) {
super(props);
this.otPublisher = React.createRef();
}
然后,您可以在组件安装后或在组件内创建会话的任何位置访问该引用。例如,问题中的第一个代码块现在看起来像这样,
startTokBox = (sessionData) => {
const { webrtc_api, webrtc_session_id, webrtc_token } = sessionData.webrtc_details || {};
this.tokbox = createSession({
apiKey: String(webrtc_api),
sessionId: webrtc_session_id,
token: webrtc_token,
onStreamsUpdated: (streams) => {
this.setState({ streams });
},
});
this.otPublisher.current.getPublisher();
}
然后,如果您想获取统计信息,那么这是一个函数,可以看起来像这样。
this.otPublisher.current.getPublisher().getStats((err, stats) => console.log('stats', err, stats));
有关此票证的更多信息和帮助:https ://github.com/opentok/opentok-react/issues/49
推荐阅读
- laravel - Guzzle 请求未返回完整响应
- discord - 调用任何命令时运行另一个函数 discord.py
- javascript - 所有api都有终点吗?端点总是一个 URL 吗?
- javascript - 使用 Javascript 的计算器
- event-handling - Discord.js 如何使用事件处理程序?
- python - Flask 在多个路由 NameError 中使用虚拟数据:未定义名称“产品”
- reactjs - 使用测试库(React)找不到按钮
- python - 在 Tkinter 和 Python 中,一个函数中制作的按钮在另一个函数中不存在
- python - 相当于 python 中的 'os.mkfifo()'
- fonts - 如何增加正文和部分的字体大小