收藏
回答

全局使用SocketTask建立连接成功,SocketTask.onOpen不执行?

我在app.js中使用SocketTask创建socket连接,创建连接成功了,但是用SocketTask监听onOpen事件没有执行

我是在app.js执行onLaunch函数建立websocket连接,连接建立成功后,在登陆页面使用socketTask调用方法监听socket打开事件,没有执行,socketTask打印如下:

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

6 个回答

  • 恭喜发财
    恭喜发财
    2022-11-10

    我也遇到这个问题了,怎么解决,求助求助


    2022-11-10
    有用
    回复
  • 2022-03-06

    什么玩意更不不好使, var socket_ = uni.connectSocket({

    url: VUE_APP_WS_URL,

    success:e => {

    console.log(store.getters.webSocket)

    console.log(e)

    socket_.onOpen()

    }

    });

    这么写吗

    2022-03-06
    有用
    回复
  • 阿白
    阿白
    2022-01-12

    是的,先在wx.connectSocket的success里面判断成功后,再使用SocketTask进行后续操作。问题可以解决。


    2022-01-12
    有用
    回复
  • 小飞
    小飞
    2021-07-04

    不知道是我没看懂,还是这个设计有点2.。。

    socketTask需要wx.connectSocket操作才能返回,而connectSocket是异步进行websocket连接的。

    然后如果要在socketTask里面监听onOpen,那只能在wx.connectSocket之后才能有socketTask对象,当拿到这个sockeTask对象的时候,因为wx.connectSocket是异步执行,那么这时有可能websocket已经建立了,是否意味着此时再去调用socketTask.onOpen就收到不onOpen的消息了。而如果此时wx.connectSocket异步连接还没有建立,那此时调用socketTask.onOpen就能收到连接建立的回调。

    2021-07-04
    有用
    回复 4
    • 小飞
      小飞
      2021-07-04
      看了文档,这估计是为了做历史兼容而做的一个比较2的设计?
      因为按正常socket/websocket的设计,那应该是提供接口返回一个未连接的socket,然后再在socket里面进行onOpen、onClose以及connect等操作,这样就不会出现异步连接收不到onOpen了
      2021-07-04
      2
      回复
    • 阿谜
      阿谜
      2022-01-01
      我知道了,wx.connectSocket有一个success的回调,可以在这里面写连接成功的回调。
      2022-01-01
      回复
    • 慎独
      慎独
      2022-03-20回复阿谜
      能回调成功吗
      2022-03-20
      回复
    • 韩文博
      韩文博
      2022-10-20回复慎独
      不能,因为success后已经onOpen了,不会再触发onOpen
      2022-10-20
      回复
  • 老骆驼
    老骆驼
    发表于移动端
    2021-05-29
    丨L儿一…此。∴<丶:,…一…√辽w乙√∵…“:~↗∧乚八a:
    2021-05-29
    有用
    回复
  • Cjiang
    Cjiang
    2021-03-22

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2021-03-22
    有用
    回复 10
    • zxb&zm
      zxb&zm
      2021-03-23
      我改了一下代码,之前是从回调里调用的方法,现在把方法写到外部了,请问SocketTask创建socket连接是同步方法吗?
      2021-03-23
      回复
    • Cjiang
      Cjiang
      2021-03-24回复zxb&zm
      异步的,再自查看看?
      2021-03-24
      回复
    • 阿白
      阿白
      2021-05-11
      SocketTask=wx.connectSocket是异步的,怎么在调用onOpen、onMessage、onError、onClose之前判断connectSocket是否已成功?
      2021-05-11
      回复
    • 阿白
      阿白
      2021-05-22回复Cjiang
      可以回答一下吗?socket应该怎么用比较好
      2021-05-22
      回复
    • Cjiang
      Cjiang
      2021-05-23回复阿白
      在wx.connectSocket 的回调函数里面进行调用 onOpen、onMessage、onError、onClose?
      2021-05-23
      回复
    查看更多(5)
登录 后发表内容
问题标签