Im essayant d'émettre un message personnalisé de mon client. J'ai besoin d'effectuer certaines actions sur son succès et son échec. Maintenant, comment puis-je attacher la méthode de rappel de réussite à émettre?
Pour le rappel d'erreur, j'ai utilisé événements exposés doc et l'ai fait fonctionner
socket.on('error', () -> console.log("Error Occured"))
Pour réussir, j'ai essayé
socket.emit('my custom method', {content: json},() -> console.log("Emitted"))
Ce rappel n'est jamais déclenché, que ce soit un succès ou un échec.
Comment puis-je me procurer le gestionnaire de réussite?
Si vous regardez les documents, cela vous montre un exemple de passage d'une fonction de rappel -2ème dernier exemple: http://socket.io/docs/#Sending-and-getting-data-acknowledgements
Ex serveur:
socket.on('formData',
function(data, fn){
// data is your form data from the client side
// we are here so we got it successfully so call client callback
// incidentally(not needed in this case) send back data value true
fn(true);
}
);
client:
socket.emit('formData',
data,
function(confirmation){
// send data
// know we got it once the server calls this callback
// note -in this ex we dont need to send back any data
// - could just have called fn() at server side
console.log(confirmation);
}
);
La raison pour laquelle votre deuxième code ne fait rien est que les événements exposés dans socketIO sont juste définis pour socket.on
méthodes. Par conséquent, vous devez ajouter une autre émission dans votre serveur app.js pour accomplir cela
Client émet le message personnalisé et envoie des données JSON au socket via socket.emit, il obtient également une fonction de mise à jour qui gère le rappel de réussite
socket.emit ('message', {hello: 'world'});
socket.on ('messageSuccess', function (data) {
//do stuff here
});
Côté serveur Obtient un appel du message émis par le client et émet le message Retour au client
socket.on ('message', function (data) {
io.sockets.emit ('messageSuccess', data);
});
Vous pouvez probablement créer un module à partir de ce comportement afin de pouvoir le joindre à chaque message que vous souhaitez traiter de cette façon.