我正在尝试在我的应用程序中实现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实现到了我的班级。但是没有触发任何回叫。
由于
答案 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