我正在爲swift
實施socket.io
庫。僅當其他異步方法在Swift中完成工作時,如何才能異步調用某個方法?
有相關連接(如下所示)的服務器的方法:
func connectToServerWithNickname(nickname: String) {
socket.emit("connectUser", nickname)
}
的socket.emit
電話:
private func _emit(data: [AnyObject], ack: Int? = nil) {
dispatch_async(emitQueue) {
guard self.status == .Connected else {
self.handleEvent("error", data: ["Tried emitting when not connected"], isInternalMessage: true)
return
}
let packet = SocketPacket.packetFromEmit(data, id: ack ?? -1, nsp: self.nsp, ack: false)
let str = packet.packetString
DefaultSocketLogger.Logger.log("Emitting: %@", type: self.logType, args: str)
self.engine?.send(str, withData: packet.binary)
}
}
,你可以看到這一切都裝在dispatch_async
。我想盡快張貼NSNotification
因爲這種方法做,我的應用程序連接到服務器,某事像:
NSNotificationCenter.defaultCenter().postNotificationName(setConnectionStatus, object: self)
所以我的問題是 - 我應該如何修改我的connectToServerWithNickname
方法,使其調用我的nsnotificationcenter
什麼時候一切正常?
'只要這個方法完成,我的應用程序連接到服務器'這是否意味着它可以在'self.engine?.send(str,withData:packet.binary)'行之後完成,或者在發送通知之前,您是否必須等待服務器響應以確保您已連接? – Moritz
我知道有確認連接成功的'ack'數據,所以對我來說,獲得這些信息然後調用'NSNotificationCenter'是完美的。否則 - 如果這是不可能的 - 我可以留在第一個選項,雖然 – user3766930
你沒有套接字監聽器,就像onEvents,當你收到連接的消息時會觸發? – SeanLintern88