我的应用中有五个标签。登录后显示第二个选项卡,我在第三个选项卡的viewDidAppear中调用了socket连接,如下所示。
SocketIOManager.sharedInstance.connectToServer(decoded, completionHandler: { (List) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
print("response \(List)")
)}
)
在SocketIOManager下面的代码
func connectToServer(data: AnyObject, completionHandler: (List: AnyObject) -> Void) {
socket.on("connect") { (dataArray, socketAck) -> Void in
self.socket.emit("api_request", data)
print("Socket Connected")
}
socket.on("api_response") { ( dataArray, ack) -> Void in
completionHandler(List: dataArray as AnyObject!)
//print("acknowledgemt received from \(dataArray)")
}
}
并在Appdelegate中提供以下代码
func applicationDidEnterBackground(application: UIApplication) {
SocketIOManager.sharedInstance.closeConnection()
}
func applicationDidBecomeActive(application: UIApplication) {
SocketIOManager.sharedInstance.establishConnection()
}
我登录后立即收到回复,然后按第三个标签。只有在关闭应用程序并重新打开它后才能获得响应。