收藏
回答

【微信小游戏开发者工具】Unity BestHttp WebSocket不能连接?

我填写的请求地址是ws://127.0.0.1:8900/websocket ,勾选了不校验合法域名

最后一次编辑于  2022-07-14
回答关注问题邀请回答
收藏

2 个回答

  • Z.O.E
    Z.O.E
    2023-02-18

    这个我解决了,是BestHttp的WebSocket实现和微信API 不对应造成的。

    微信的SDK weapp-adapter.js中WebSocket创建的位置有一个url的判断

    if (typeof url !== 'string' || !/(^ws:\/\/)|(^wss:\/\/)/.test(url)) {
     throw new TypeError(`Failed to construct 'WebSocket': The URL '${url}' is invalid`);
    }
    

    也就是说url必须是一个字符串。

    而BestHttp_WebSocket.jslib中WS_Create的实现里传入的是一个URL对象,所以就出问题了。

    我的解决办法是吧WS_Create中传入的对象改成的字符串。

    // var urlStr = new URL(UTF8ToString(url)); 
    var urlStr = (UTF8ToString(url)).replace(/\+/g, '%2B').replace(/%252[fF]/ig, '%2F');
    


    2023-02-18
    有用 3
    回复 2
    • 老爷子
      老爷子
      2023-03-31
      解决了 666
      2023-03-31
      回复
    • 酷V
      酷V
      2023-11-18
      非常感谢 微信的WebSocket少代码 把我搞的头大了
      2023-11-18
      回复
  • AIQ.
    AIQ.
    07-15

    补充一下, WS_Send_Binary也要改


    var buff = HEAPU8.buffer.slice(ptr + pos, ptr + pos + length);  //WeChat
    socket.socketImpl.send(buff);
    


    07-15
    有用 1
    回复 2
    • Hong
      Hong
      09-26
      6
      09-26
      回复
    • 柯小蚪
      柯小蚪
      星期三 16:27
      大佬,为啥要这么改一下呢?
      星期三 16:27
      回复
登录 后发表内容