Swift Socket,收听传入消息

时间:2018-01-05 06:50:32

标签: ios swift sockets swift4

我正在尝试在我的应用程序中实现swift socket。我对套接字编程很新。我能够通过套接字发送消息。但是我无法收听来自服务器的任何消息。我已经实现了以下代码:

    let host = Urls.GetServerIP()
    let port = portNo
    client = TCPClient(address: host, port: Int32(port))

    switch client?.connect(timeout: 10) {
    case .success?:
        print((readResponse(from: client!)))
    case .failure(let error)?:
        print( String(describing: error))
        break

    case .none: break

    }

在上面的代码中,我能够在连接后立即读取传入的消息。但是,几分钟之后,我无法找到方法知道服务器上有消息。

是否有任何特定的回叫知道何时从服务器收到新邮件?

我已经将StreamDelegate实现到了我的班级。但是没有触发任何回叫。

由于

2 个答案:

答案 0 :(得分:2)

您的代码似乎缺乏连续阅读,这就是您只获得一次消息的原因。我以前常常使用SwiftSocket。这个框架的问题在于它太简单并且缺乏很多功能,例如加密。

我切换到CocoaAsyncSocket,这是瑞士军刀在Swift中处理套接字连接。

这是一个简短的例子:

var jsonDictionary = JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonStr);
Console.WriteLine(jsonDictionary["answer"]);

代码很大程度上取决于服务器的行为方式以及您确切想要做的事情。套接字处理并不是一件容易的事,特别是当你添加加密时(你应该在现代应用程序中做)。您可以使用documentation作为起点,但您必须阅读并学习很多东西。

答案 1 :(得分:-1)

您可以将 SocketIOClient 用于网络套接字。它可用于通过套接字发送或接收消息。

链接:

 https://github.com/nuclearace/Socket.IO-Client-Swift