【问题标题】:How can I check if the socket is connecting or not using Starscream?如何使用红蜘蛛检查套接字是否正在连接?
【发布时间】:2018-06-27 14:48:53
【问题描述】:

我使用 红蜘蛛。如何检查套接字是否连接? isConnecting 是私有财产。

【问题讨论】:

    标签: ios swift starscream


    【解决方案1】:

    如果你想检查你的套接字是否还活着(如果你觉得它可能已经死了,例如你没有收到你应该得到的数据包流)那么你可以发送 ping,它会导致在套接字消失的情况下触发 websocketDidDisconnect 方法。是的,你是对的 isConnected 说它过去是连接的,所以你不能依赖它。

    func sendPing() {
        guard let socket = socket, socket.isConnected
            else { return }
        socket.write(ping: "PING")
    }
    

    【讨论】:

    • socket.isConnected 不再工作。现在有机会检查是否手动连接吗?
    【解决方案2】:

    你应该使用socket.isConnected:

    if socket.isConnected {
        //socket is connected
    }
    

    【讨论】:

    • 谢谢。我认为isConnectedthe socket has connect once in a past。它没有说the socket is connecting now。因为它在离线时说true
    • @MaikoOhkawa 可能是应用下线时socket没有正确断开。使用Reachability 测试您的应用的当前连接状态。
    • 谢谢。我知道我需要在离线时手动拨打discCnnect()isConnected 属性不会自动更改。嗯...我认为,Reachability 仅在我调用它时才检查与主机的连接。如果我每 5 秒使用一次Reachability 并且离线时间很短,websocke 实际上会死,但我认为Reachability 返回成功。天哪。
    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2019-12-13
    • 2010-12-03
    • 2020-02-01
    • 2018-06-10
    • 2018-10-11
    • 2011-02-09
    相关资源
    最近更新 更多