/ / Verificare che il client abbia ricevuto il messaggio dal server - node.js, socket.io

Verificare che il client abbia ricevuto il messaggio dal server: node.js, socket.io

In un servizio di chat che sto costruendo, devo inviare messaggi direttamente dal server.

Non ho trovato alcuna soluzione, c'è un esempio nella documentazione:

// SERVER
io.sockets.on("connection", function (socket) {
socket.on("ferret", function (name, fn) {
fn("woot");
});
});

// CLIENT
socket.on("connect", function () { // TIP: you can avoid listening on `connect` and listen on events directly too!
socket.emit("ferret", "tobi", function (data) {
console.log(data); // data will be "woot"
});
});

ma fa il contrario di quello che mi serve!

Ho bisogno di fare il emit dal server e ricevere una conferma di ricezione dal client!

C'è un modo per fare questo?

risposte:

1 per risposta № 1

non esiste alcuna garanzia in quanto la connessione può essereucciso prima che il messaggio del server raggiunga il client. quindi non vi sono eventi sul server come "clientGotMessage". se un messaggio DEVE raggiungere l'utente, non c'è altro modo che dire al server che hai ricevuto il messaggio sul client.

Puoi farlo "facilmente" inviando un numero verso il basso. client e server tengono traccia di quel numero. ogni volta che il server invia, conta, ogni volta che il client riceve, conta. Quando il client invia qualcosa, invia il numero, quindi il server vedrà se il client ha tutto. Se il client ha perso un messaggio, il messaggio successivo avrà un numero che il client non accetterà e richiederà il messaggio perso dal server.