【问题标题】:NSPOSIXErrorDomain Code=57 "Socket is not connected"NSPOSIXErrorDomain Code=57 "套接字未连接"
【发布时间】:2021-01-06 09:01:03
【问题描述】:

我正在使用 websocket 创建一个聊天应用程序。 我正在使用URLSessionWebSocketTask 连接到服务器。

url = ws://"appname".herokuapp.com/chats/listen/

func connect(url: String) {
    self.socket = session.webSocketTask(with: URL(string: url)!)
    self.listen()
    self.socket.resume()
}

func listen() {
    self.socket.receive { [weak self] (result) in
        guard let self = self else { return }
        switch result {
        case .failure(let error):
            print(error)
            return
        case .success(let message):
            switch message {
            case .data(let data):
                self.handle(data)
            case .string(let str):
                guard let data = str.data(using: .utf8) else { return }
                self.handle(data)
            @unknown default:
                break
            }
        }
        
        self.listen()
    }
}

它在localhost 上运行良好,但是在我将服务器部署到 Heroku 后,我收到以下消息:

NSPOSIXErrorDomain Code=57 "套接字未连接

【问题讨论】:

    标签: ios swift heroku websocket vapor


    【解决方案1】:

    我来宾它在超时后自动断开连接。
    因此,我每 10 秒添加一次 ping 功能。然后,它起作用了:

    func sendPing() {
        self.socket.sendPing { (error) in
            if let error = error {
                print("Sending PING failed: \(error)")
            }
            
            DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
                self.sendPing()
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-21
      • 2011-10-10
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 2015-03-09
      • 1970-01-01
      相关资源
      最近更新 更多