首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RTCDataChannel send()是一个同步/阻塞调用吗?

RTCDataChannel send()是一个同步/阻塞调用吗?
EN

Stack Overflow用户
提问于 2014-06-06 05:43:17
回答 2查看 809关注 0票数 2

我试图通过WebRTC以块的形式发送一个文件,我想知道是否可以创建一个回调函数,以便在RTCDataChannel.send()发送完该文件的每个块后调用。

RTCDataChannel.send()是一个同步/阻塞调用吗?如果是这样的话,我的回调可以在.send()之后的行上执行。

如果.send()是异步/非阻塞的,那么这将变得很棘手,因为.send()似乎不接受回调函数,我希望避免使用缓冲区和超时。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-06 06:54:43

方法阻塞了。但是,它不会等到数据通过线路,而只是将数据放在内部缓冲区中,以便以后(或与脚本执行并行)发送。

未传输的数据量作为属性可用,每个send()调用都会同步增加该数据量(否则,在下一个事件循环转弯之前不会进行更新)。

因此,您可能会使包装器异步,并在当前缓冲数据“太多”(根据您认为合适的标准)实际调用send()之前放置一个超时。

票数 3
EN

Stack Overflow用户

发布于 2017-03-23 09:40:20

如前所述,send()实际上是异步的--您没有收到送货收据。但是,有一个回调onbufferedamountlow,当通道耗尽它的发送缓冲区时,就会调用它在bufferedAmountLowThreshold设置的值下面的发送缓冲区(参见MDN的缓冲量)

您可以使用该回调来决定何时发送下一个块。

但是,请注意,对于标准草案来说,这是相对较新的,而且可能并不是所有地方都支持。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24074961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档