【发布时间】:2016-05-05 18:11:21
【问题描述】:
当我在 2 个浏览器之间设置数据通道(在同一网络上的 2 台不同机器上测试)时,在以下 2 种情况下,我得到了不同的延迟结果。
案例1:只发送/接收
当我设置一侧发送测试消息时,间隔例如 70 毫秒,我看到它们从另一侧进入,没有明显的延迟。每条接收消息之间的时间接近 70 毫秒。到目前为止一切顺利。
案例2:双方依次发送和接收
当我设置双方在收到对方的消息后立即发送消息,并且距离上次发送超过 70 毫秒,一切都很好,除了有时。每隔几秒(不一致),我会测量约 1000 毫秒的延迟。奇怪的是,绝大多数消息之间的时间要么 ~1000ms。
我在 chrome 和 firefox(组合)中测试了这两种情况,行为相似。我还在移动电话网络(使用网络共享)上对其进行了测试,结果显示相同的延迟,尽管频率较低。数据通道未配置任何特殊选项,因此它使用可靠、有序的连接。
这可能是什么原因造成的?在我看来,它可以修复,因为向一个方向(无论哪种方式)发送都可以正常工作而没有延迟。我还尝试使用单独的数据通道进行发送/接收,这没关系。
示例
这是第二种情况的测试结果示例。它是 1000 次往返时间超过 200 毫秒的所有往返时间的列表。
(Delay index) round trip time - round trip number - time
(0) 2192 - 0 - "2016-05-06T12:34:18.193Z"
(1) 1059 - 111 - "2016-05-06T12:34:22.777Z"
(2) 1165 - 372 - "2016-05-06T12:34:32.485Z"
(3) 1062 - 434 - "2016-05-06T12:34:35.585Z"
(4) 1157 - 463 - "2016-05-06T12:34:37.598Z"
(5) 1059 - 605 - "2016-05-06T12:34:43.264Z"
(6) 1160 - 612 - "2016-05-06T12:34:44.633Z"
(7) 1093 - 617 - "2016-05-06T12:34:45.857Z"
(8) 1158 - 624 - "2016-05-06T12:34:47.204Z"
(9) 1162 - 688 - "2016-05-06T12:34:50.401Z"
(10) 1158 - 733 - "2016-05-06T12:34:52.962Z"
(11) 1161 - 798 - "2016-05-06T12:34:56.163Z"
(12) 1157 - 822 - "2016-05-06T12:34:58.077Z"
(13) 1158 - 888 - "2016-05-06T12:35:01.281Z"
(14) 1160 - 893 - "2016-05-06T12:35:02.563Z"
(15) 1085 - 898 - "2016-05-06T12:35:03.768Z"
这是另一个示例,包括来自 chrome://webrtc-internals 的“PacketsSentPerSecond”图表:
在此测试中,发送了约 2100 个数据包,导致以下 26 次往返耗时超过 900 毫秒:
[1762.6050000000014, 1179.7200000000012, 1765.375, 1149.945000000007, 1180.1399999999994, 1180.9550000000017, 1246.2450000000026, 1750.2649999999994, 1388.0149999999994, 1100.7499999999854, 4130.475000000006, 1160.1150000000052, 1082.4399999999878, 1055.2300000000105, 1498.715000000011, 1105.8850000000093, 1478.1600000000035, 2948.649999999994, 1538.2549999999756, 1839.9099999999744, 1768.6449999999895, 1167.929999999993, 1139.1750000000175, 1173.8850000000093, 1245.6600000000035, 1075.375]
我仍然没有弄清楚是什么导致了这种滞后。我希望得到一个更平滑的图表。
【问题讨论】:
-
可能是您的代码中的错误。
-
我被这篇帖子触发了:stackoverflow.com/questions/19475894/…。虽然我的问题与后台选项卡中的设置超时无关,但我有这种感觉,它可能是由类似的东西引起的......
-
感谢您的链接!当您遇到这种情况时,您是否保持两个选项卡/浏览器都集中?如果您不关注选项卡或浏览器,是的,那么我会期待这一点。 W3C 仍在寻找驱动程序来规范datachannel in workers。
-
闻起来像垃圾收集
-
只是一个愚蠢的想法,您使用带电池的设备吗?如果是这样,您可以在插入电源的情况下再次测试吗?大约一年前,我的 voip 应用程序出现了奇怪的延迟,结果我的客户使用了一些没有电源线的平板电脑,这降低了网卡的优先级并导致了延迟。
标签: javascript network-programming webrtc lag