收藏
回答

请问如何能知道一个websocket连接其实已经断开了?

我发现就算开飞行模式, socketTask.send() 也出触发success 回调。 并且开飞行模式也不会立即触发onError 和 onClose回调, 这样除了等心跳失败外,还有什么办法可以知道这个连接是否断开了呢?谢谢

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

3 个回答

  • 啊哈
    啊哈
    2023-12-07

    你确认下飞行模式有没有断开wifi连接的。 我这边测试开启飞行模式,wifi还是保持连接的,再关闭wifi 就触发onClose了

    2023-12-07
    有用 1
    回复 1
    • 开阳月
      开阳月
      2023-12-07
      确认, 我在iPhone12 上, 关闭wifi 和 开启飞行后,  不会立即触发onClose
      2023-12-07
      回复
  • showms
    showms
    2023-12-07

    如果确实有这样的问题,可能你需要考虑设计一个类似消息已确认未确认的功能

    2023-12-07
    有用
    回复
  • 一笑皆春
    一笑皆春
    2023-12-07

    心跳失败还不够用的?

    2023-12-07
    有用
    回复 9
    • 开阳月
      开阳月
      2023-12-07
      不够呀, 比如心跳5秒一次,在第一秒就断开了,在第2秒发送了消息。 我只有在心跳timeout后才能知道这个消息其实没有发出吗?
      2023-12-07
      回复
    • 一笑皆春
      一笑皆春
      2023-12-07回复开阳月
      这些监听不能用吗
      2023-12-07
      回复
    • 开阳月
      开阳月
      2023-12-07
      对啊  onerror  onclose 没一个即时报的, 这些监听只有等到websocket自带的心跳检测出错时才报
      2023-12-07
      回复
    • 开阳月
      开阳月
      2023-12-07
      就连send 都能返回success,  所以实在不知道怎么搞
      2023-12-07
      回复
    • 一笑皆春
      一笑皆春
      2023-12-07回复开阳月
      你确定success的时候没发出去吗?
      2023-12-07
      回复
    查看更多(4)
登录 后发表内容