收藏
回答

WebSocket、TCPSocket 的网络通讯延时问题?

业务流程大致是需要小程序端与服务端建立长链接,然后有多次数据交互,即:小程序发送 - 服务端接收 - 服务端发送 - 小程序接收 如此循环。

而在这个过程中,每一次的数据交互对延时要求非常高,不能超过 90ms。即小程序发送信息到小程序接收返回信息的过程不能超过 90ms,超过时间则信息的会被判断失效。

为此都分别使用过WebSocket、TCPSocket来建立长链接通信,在网络特别好(5G、WiFi)时没有问题,网络稍差点时,出错率非常高,发现都是超时导致的。注:是在发布的版本、预览调试模式时,并非真机调试模式。

在 4G 网络情况一般的环境下,通过服务器、抓包分析:

服务器在接收、处理、发送信息的过程一般用时就 4、5ms

抓包手机通信,发送、接收过程在 10ms 左右

但在小程序的 socket 中反应出来的时间就有 100+ ms,且浮动范围大,有时能达到3、400。

目前怀疑是因为在微信框架里的原因,即通信需要通过微信的服务器转发:小程序 <——> 微信 <——> 开发者服务器。

所有增加的耗时,感觉都是因为在微信官方哪儿转了一遍(估计因为要监控信息),但我不介意,关键是效率不要这么离谱行不行,或者搞个异步\开个其他线程,我收我的信息,你收集你的!!!

请官方出来解释一下哇。(抱拳~~~)

另外,也希望遇到过这种问题、有解法的大佬能不吝赐教。(抱拳~~~


回答关注问题邀请回答
收藏

1 个回答

  • 社区技术运营专员--阳光
    社区技术运营专员--阳光
    2022-03-10

    线上的吗?给个路径这边看下

    2022-03-10
    有用
    回复 3
    • 社区技术运营专员--阳光
      社区技术运营专员--阳光
      2022-03-11回复HakunaMatata
      我需要复现一下你的这个问题,有线上的小程序能直接复现的吗?或者给个简单demo看看
      2022-03-11
      回复
    • HakunaMatata
      HakunaMatata
      2022-03-11
      这个是代码片段
      https://developers.weixin.qq.com/s/A9PRqFmf7ux7


      测试在微信开发者工具中,使用预览模式,在4G网络时,TCPSocket 在与后台通信时的时延
      客户端与服务端不对信息做任何处理,建立TCP连接后,服务端发送任意数据,客户端响应到数据后,立即发送任意数据给服务端,服务端通过发送-接收的时间差来确定通信使用的时间。


      就我们自己测试结果看
      若是在用局域网IP,耗时大概在10ms;
      若是用域名、使用电信4G信号,耗时波动范围大概在 100 - 400ms


      使用这段代码片段进行问题复现的话,需要自己搞个TCP服务,或者用个TCP工具。
      使用域名测试时,需要将端口映射到外网域名进行测试。
      2022-03-11
      回复
    • HakunaMatata
      HakunaMatata
      2022-03-16回复社区技术运营专员--阳光
      阳光同学,有什么进展了吗?同步一下呀。
      2022-03-16
      回复
登录 后发表内容