ausgelöst immer ich eine Probe Socket Projekt von Github heruntergeladen haben https://github.com/appcoda/SocketIOChatSockel connectUser mehrfach in schnellen
Wenn ich laufen die App es funktioniert gut, aber das Problem ist, dass, wenn ich einen Benutzer verlassen und einen anderen Namen eingeben Zum Herstellen einer Verbindung wird die connectUser-Methode abhängig von der Verbindungsdauer mehrmals ausgelöst. Ich möchte nur, dass es sich nur einmal verbindet. Zum Beispiel ist unten Stück Code von der Probe über
func askForNickname() {
let alertController = UIAlertController(title: "SocketChat", message: "Please enter a nickname:", preferredStyle: UIAlertControllerStyle.Alert)
alertController.addTextFieldWithConfigurationHandler(nil)
let OKAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { (action) -> Void in
let textfield = alertController.textFields![0]
if textfield.text?.characters.count == 0 {
self.askForNickname()
}
else {
self.nickname = textfield.text
SocketIOManager.sharedInstance.connectToServerWithNickname(self.nickname, completionHandler: { (userList) -> Void in
dispatch_async(dispatch_get_main_queue(), {() -> Void in
if userList != nil {
print("USerlIst:\(userList)")
self.users = userList
self.tblUserList.reloadData()
self.tblUserList.hidden = false
}
})
})
}
}
alertController.addAction(OKAction)
presentViewController(alertController, animated: true, completion: nil)
}
Hier jedes Mal, wenn ich in den Chat mit dem Benutzernamen eingeben, wird die connectToServerWithNickname
Methode durch die Anzahl der Male ausgelöst immer ich versuche, den Namen und Drucke eingeben die Liste mehrmals. Ich habe überprüft und im obigen Beispiel der Socket als Singleton-Klasse erstellt und jedes Mal verwendet es die gleiche Instanz. Was muss ich tun, um diesen Mehrfachanruf zu verhindern?