Je suis implémentant la bibliothèque socket.io
pour swift
.Comment puis-je appeler de manière asynchrone une méthode uniquement lorsque d'autres méthodes async ont fini de fonctionner dans Swift?
Il existe une méthode liée à la connexion au serveur qui se présente comme suit:
func connectToServerWithNickname(nickname: String) {
socket.emit("connectUser", nickname)
}
Les appels 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)
}
}
comme vous pouvez le voir tout est emballé dans dispatch_async
. Je voudrais poster un NSNotification
dès que cette méthode est fait et mon application se connecte au serveur, STH comme:
NSNotificationCenter.defaultCenter().postNotificationName(setConnectionStatus, object: self)
Donc, ma question est - comment dois-je modifier ma méthode connectToServerWithNickname
pour qu'il appelle mon nsnotificationcenter
quand tout va bien?
'dès que cette méthode est fait et mon application se connecte au server' Est-ce que cela signifie qu'il pourrait se faire après la' self.engine .send (str, withData: packet.binary)? 'Ligne, ou devrez-vous attendre la réponse du serveur pour être sûr que vous êtes connecté avant d'envoyer la notification? – Moritz
Je sais qu'il y a les données 'ack' qui confirment que la connexion a été réussie, donc pour moi, il serait parfait d'avoir cette information et d'appeler le' NSNotificationCenter'. Sinon - si ce n'est pas possible - je peux rester avec la première option bien que – user3766930
n'avez-vous pas d'écouteurs de socket, comme onEvents, qui se déclencheraient lorsque vous recevriez un message connecté? – SeanLintern88