RTCDataChannel send()是一个同步/阻塞调用吗?
Is RTCDataChannel send() a synchronous/blocking call?
我试图通过WebRTC发送一个文件块,我想知道我是否可以创建一个回调函数,在RTCDataChannel.send()
完成发送文件的每个块后调用。
RTCDataChannel.send()
是同步/阻塞呼叫吗?如果是,我的回调可以在.send()
之后的行执行。
如果.send()
是异步/非阻塞,那么这将变得棘手,因为它似乎不像.send()
接受回调函数,我想避免使用缓冲区和超时。
send
方法阻塞。但是,它并不等待数据通过网络,而只是将数据放在内部缓冲区中,以后(或在脚本执行的同时)可能会从该缓冲区发送数据。
未传输的数据量作为bufferedAmount
属性可用,该属性将在每次send()
调用时同步增加(并且在下一次事件循环转之前不会更新)。
因此,您可以使包装器异步,并在实际调用send()
之前设置一个超时,当当前缓冲的数据"太多"时(根据您认为合适的任何标准)。
如上所述,send()实际上是异步的-您不会获得交付收据。然而,有一个回调onbufferedamountlow
,当调用通道的发送缓冲区低于bufferedAmountLowThreshold
设置的值(见MDN onbufferedamounflow)
你可以使用这个回调来决定何时发送下一个块。
请注意,这是相对较新的标准草案,可能不是所有地方都支持。
相关文章:
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 在Javascript中对类的每个实例调用一个方法
- 调用一个“;默认瓦片”;在谷歌地图中
- 使用几个<脚本>标签不会't工作-只调用一个脚本
- NodeJS-从同一文件中的另一个方法调用一个方法
- 从我自己的脚本中包含的Javascript文件中调用一个函数
- 你能调用一个在调用者上下文中返回的函数吗
- 我需要在每5秒内调用一个函数,并重置持续时间
- 触发事件以调用一个函数'它在一个封闭的里面
- 每次数据表中的页面更改时调用一个函数
- 在带有参数列表的表单submit上调用一个方法
- 调用一个函数两次
- 我想在 javascript 中调用一个 php 函数,并在其中传递两个数组作为参数
- 从面板中调用一个在 ExtJs 中没有事件的方法
- 如何调用一个函数,其名称是通过在node.js中组合一些变量来动态创建的
- 动态弹出窗口'通过调用一个永远运行并返回's每个周期后的数据
- 通过javascript调用一个C#windows服务函数
- 从html中调用一个c++函数
- 你能用onblur事件调用一个外部Javascript吗
- 从javascript中调用一个c#函数