收藏
回答

7.0.8版本Socket.onOpen事件在Socket.onMessage之前触发?

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug SocketTask.onOpen 微信安卓客户端 7.0.8 2.9.3

如题。7.0.8版本SocketTask.onOpen事件在SocketTask.onMessage之前触发,在7.0.7版本和ios版本是SocketTask.onOpen先触发,具体情况可以看代码片段。

不知道是不是故意这样设计的,所以过来问一问,线上代码如果是这样写的:

this.socket.onOpen((res) => {
  console.log("onOpen");
  this.socket.onMessage((data) => {
     console.log("onMessage", data);
  });
});

将会丢失掉重要的东西,然而有一个socket.io的微信小程序库https://github.com/10cella/weapp.socket.io就是有这个问题,使用了这个库的同学线上代码将会全部遭殃。。(我就是其中一个。。)

希望官方解释下吧,不知道是不是故意这样设计的,还是bug

再传两张测试图吧


最后一次编辑于  11-27
回答关注问题邀请回答
收藏

4 个回答

  • 小程序/小游戏开发-Link
    小程序/小游戏开发-Link
    11-27
    感谢反馈,这个版本有做 WebSocket 底层实现的替换。有收到一些使用 socket.io 的开发者反馈,但都只是反馈异常,没有更有效的信息。你的这个反馈很有用,我们去排查下。
    11-27
    赞同
    回复 3
    • 习
      11-27
      好的,希望能够调整过来顺序就最好了,哈哈,谢谢了
      11-27
      回复
    • Geefib
      Geefib
      11-28
      目前收集客户后台的日志发现,ws发不出的时候readyState状态是1,{"errMsg":"sendSocketMessage:fail"} &readyStateCode=1。有点奇怪。我可以有什么方式(在哪打日志)进一步跟进吗?
      11-28
      回复
    • Geefib
      Geefib
      11-28
      我们是使用原生自行包装的
      11-28
      回复
  • 王伟
    王伟
    11-28

    终于有人详细说清问题了,我也用了socket.io,7.0.8后部分安卓手机不正常。

    我也试着反馈了,但没有仔细去研究到底是什么原因。谢谢楼主!

    11-28
    赞同
    回复
  • 在劫难逃的天真
    在劫难逃的天真
    11-28

    请教下楼主 将会丢失掉重要的东西 是指什么? 具体表现呢?  我们没用socket.io库,但是ws也出现了问题。我们用的是stoom.js  发现大部分安卓手机无法连接上ws

    11-28
    赞同
    回复 3
    • 习
      11-28
      因为socket.io是通过onMessage发过来的特殊字段来判断连接成功,然而onMessage在onOpen之后,所以如果按照上面这样写就会监听不到连接成功事件,stoom我就不太清楚了,你可以在社区里面再搜下
      11-28
      回复
    • 在劫难逃的天真
      在劫难逃的天真
      11-28回复
      好的 感谢。那也就是说 按照上面的写法 监听不到连接成功事件,那岂不是就是连接不上ws?
      11-28
      回复
    • 王伟
      王伟
      11-28
      我试了也不是连不上,而是连上需要很多时间,超过20秒!
      11-28
      回复
  • Haley XU
    Haley XU
    11-27
    你好,我想咨询小程序视频开发
    11-27
    赞同
    回复
问题标签