收藏
回答

websocket链接之后,收了一次消息就自动断开

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.connectSocket 客户端 7.0.4 2.7.0

- 当前 Bug 的表现(可附上截图)

 部分手机报此错误

    如:vivo X20A

    每次一使用wx.connectSocket,onopen里面执行wx.connectSocket,连得好好的,发了一次消息,收到消息后,他自己突然关闭websocket链接。而且是必现的,感觉跟网络什么的也没有什么关系




- 预期表现


- 复现路径


- 提供一个最简复现 Demo



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

4 个回答

  • 禾店科技
    禾店科技
    2021-04-28

    代码有错误 好好检查一下

    2021-04-28
    有用 1
    回复
  • 暮雪流年
    暮雪流年
    2023-07-27

    怎么解决的,我现在也碰到这个问题了,开发者工具和真机模拟都报错,连接后第一次send ,收到message就直接异常关闭了

    2023-07-27
    有用
    回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2019-05-24

    代码片段有误,麻烦重新确认下

    2019-05-24
    有用
    回复 4
    • 2019-05-27

      https://developers.weixin.qq.com/s/A4jK0Gm57h8S

      这个片段看看,我本地没有提示报错呢,实在不行,我这里有个简版的demo


                  var host = '';//能链接的websocket地址

       

        //链接websocket

        wx.connectSocket({

          url: host,

          header: {

            'content-type': 'application/json'

          },

          protocols: ['protocol1'],

          method: "GET",

          fail:function(){

          console.log("创建websocket链接失败!");

        }

        })

        wx.onSocketOpen(function (res) {

          console.log('WebSocket连接已打开!');

         

            var json = {

              "mtype": 1,

              "number": 2, //人数

              "paragraphId": that.data.paragraph_id, //段位id

              "accountId": that.data.userInfo.account_id,//玩家id

              "seasonId": that.data.season_id,  //赛季id

              "isReconnect": 1 //标识匹配成功后对手退出对战,将用户重新列入匹配队列!默认1, 重新匹配改成1

            }

            

      //webscoket必须处于连接状态,往服务器推送一条消息

          console.log("发送消息:" + JSON.stringify(json));

          wx.sendSocketMessage({

            data: JSON.stringify(json)

          })

            // 20s监听,没有匹配成功,提示匹配失败

            var setTime = setTimeout(function () {

            console.log("匹配失败!");

                    wx.closeSocket();

            }, 20000);

        }) 

        wx.onSocketMessage(function (res) {

          var json = JSON.parse(res.data);

          if (json.mtype == -1) {

            console.log("mtype=-1 不处理");

            return false;

          }

          // 匹配成功

          else if (json.mtype == 2) {

          console.log("匹配成功");

          }

          

        })

        


      2019-05-27
      回复
    • 疯狂的小辣椒
      疯狂的小辣椒
      2019-05-27回复

      新的代码片段都没有内容,麻烦自己先测试下代码片段正常可用

      2019-05-27
      回复
    • 2019-05-28回复疯狂的小辣椒

      https://developers.weixin.qq.com/s/YQFoTHm57s8q

      好了,第一次弄这个代码片段理解错了,你试试这个

      具体复现过程是vivo X20A的手机,链接websocket,然后客户端发一次消息,客户端再收一次消息,链接就断开了

      2019-05-28
      回复
    • 2019-06-03回复疯狂的小辣椒

      有进展么,问题能复现吗?

      2019-06-03
      回复
  • 2019-05-24

    目前发现vivo X20A这个机型有这个问题

    2019-05-24
    有用
    回复
登录 后发表内容