2016-06-15 2 views
0

J'utilise SocketIO-Client-Swift pour ouvrir WebSockets et communiquer avec un serveur. Cependant, le problème que je rencontre est que je veux me connecter à la socket, puis me connecter au serveur avec un emit.Comment puis-je attendre que Socket.IO ait une connexion socket établie avant de connecter un utilisateur au serveur?

SocketIOManager.sharedInstance.connectToSocket() 

SocketIOManager.sharedInstance.connectToServer(self.myUsername) 

Et les points aux fonctions ici:

func connectToSocket() { 
    addHandlers() 
    socket.joinNamespace("/chat") 
    socket.connect() 
} 

func addHandlers() { 
    self.socket.on("connectUser") { data in 
     print("socket connected") 
    } 
} 

func connectToServer(username: String) { 
    socket.emit("connectUser", username) 
} 

Même après l'enregistrement de la poignée, la Emit est appelée avant que la prise est correctement connecté. La connexion fonctionne correctement une fois que la connexion a été établie, car je peux envoyer des messages et recevoir des commentaires après que mon journal affiche une connexion.

Répondre

1

Vous devez attendre que le client reçoive l'événement connect. Cela indique qu'il est maintenant connecté et vous pouvez envoyer en toute sécurité les données initiales sur la connexion à partir de ce gestionnaire d'événements.