Merci pour votre réponse, @arbuthnott
Finalement, je trouve mon erreur:
L'ensemble du processus, je l'ai fait raison: (La demande de se joindre à la salle se fait par le serveur, avec des voiles .sockets.join())
Une mauvaise chose utilisait socket.on() avec le paramètre "ROOM NAME".
Je vais vous expliquer mieux, pour d'autres ayant même problème:
1) De Swift vous devez souscrire une demande de websocket à un point de terminaison sur le serveur qui accepte la demande de websocket (GET, POST, PUT). Dans un exemple, vous pouvez faire une requête POST, en passant dans le corps le nom de la pièce à laquelle vous voulez vous abonner.
I.e.:
socket.emitWithAck("post",["room": "testroom", "url": "/api/v1.0/roomsubscribing"]).timingOut(after: 0) {data in print("Server responded with \(data)") }
2) côté serveur, dans le point final de roomsubscribing vous avez le code suivant:
roomsubscribing: function(req, res) {
if(!req.isSocket) {
return res.badRequest();
}
sails.sockets.join(req, req.params('room'), function(err) {
if (err) {
return res.serverError(err);
}
});
}
3) Lorsque le serveur souhaitez diffuser des données aux abonnés du "testroom" chambre, le code suivant doit être utilisé:
sails.sockets.broadcast('testroom', { message: 'testmessage' }
maintenant, le truc est ici: Sur Swift vous devez utiliser:
socket.on("message") { data, ack in print(data) }
afin d'obtenir le gestionnaire de messages fonctionne. Je pensais que vous devriez utiliser le nom de la salle, à la place, vous devriez utiliser la clé de l'entrée KEY/VALUE que vous avez utilisé dans votre serveur lorsque vous avez diffusé les données (dans ce cas, "message").
Maintenant, cela fonctionne comme un charme.
Salutations,
Mike