收藏
回答

wx.connectSocket 在微信开发者工具中,不能发出连接,抓包根本没抓到发出的包

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小游戏 Bug 网络 工具 1.05.2103200 2.16.1

发现调用wx.connectSocket根本没有执行到连接。

具体调试细节如下,请问是什么原因,是什么地方没有初始化吗?

重现:

直接在打飞机小游戏中,new Main()后面,加入wx.connectSocket 就可以发现。

调试下去在asdebug.js 内createSocketTask 函数:

            try {

                let e = window.WebSocket; // <------------ 这里window里面没有WebSocket

                if (a.asLoader) { // <------------ 这里a里面没有asLoader

                    const t = a.asLoader.getInstanceWindowSync();

                    if (!t)

                        return void u({

                            errMsg: "connectSocket:fail runtime invalidated"

                        });

                    e = t.__global.WebSocket

                }

                E = new e(h,t.protocols || []) // <------------ 这里e = undefined,抛出异常

            } catch (e) {

                if (k)

                    return;

                o.emit("triggerOnEvent", "onSocketTaskStateChange", { // 到了这里

                    socketTaskId: w,

                    state: "error",

                    errMsg: "未完成的操作"

                }),

                delete c[w]

            }

            if (!E)

                return; // <------------ 这里直接return


最后一次编辑于  2021-04-23
回答关注问题邀请回答
收藏

1 个回答

  • momo
    momo
    2021-04-23

    也允许不安全的域名,TLS,证书了。

    代码是类似这样的,所有的handler都没有收到信息

      let socketTask = wx.connectSocket({
            url: 'wss://xxxxx.com:443' , // <-------- 已经加入了白名单,并且开发工具不安全选项也已经开了
            success: function(e) {
                console.log("???") // <----- 这里有执行到
            }
          })
        console.log(socketTask.readyState); // <----- 直接就是 3 CLOSED
        console.log("try login");
        socketTask.onMessage(function() {
            console.log("ddd");
        })
        socketTask.onOpen(function() {
            console.log("aaa");
        })
        socketTask.onError(function() {
            console.log("bbb");
        })
        socketTask.onClose(function() {
            console.log("ccc");
        })
        console.log(socketTask.readyState);
    
    2021-04-23
    有用
    回复 3
    • Forever
      Forever
      2021-04-23
      那就是开发者工具的问题,可以尝试使用其他的版本
      2021-04-23
      1
      回复
    • momo
      momo
      2021-04-23回复Forever
      刚换过最新的nightly-build的工具。现在好了。
      2021-04-23
      回复
    • momo
      momo
      2021-04-23
      建议赶快把修复更新到稳定版本上去。这个对调试影响还是挺大的。
      2021-04-23
      回复
登录 后发表内容