我有一个swift命令行应用程序,它使用socket.io与服务器通信。问题是我使用的库是异步的,因此一旦应用程序完成连接并进入循环,主线程中的事件处理程序就永远不会被执行。
我知道我需要使用某种形式的GDC,但是大多数示例在此处仅处理异步调用后的同步处理。但我想做的只是让主线程免费处理来自工人的事件。
这是一种天真的方法,使主线程无法处理处理程序:
import Foundation
let socket = SocketIOClient(socketURL: "localhost:3000", options: [.Log(true), .ForceWebsockets(true)])
socket.on("connect") {data, ack in
print("socket connected")
}
socket.on("config") {data, ack in
print("got my config")
}
socket.connect()
while (true){
sleep(1)
}
现在,我将如何制作runloop,或使用GDC使处理程序能够被执行?