Check if the user received message with socket io

Problem

I have simple question , think I sent a message with socket.emit in server to client , so how can I check if the user really got the message , does socket io or node have any built in system

, I know that I can use ping user with socket.emit and after that user send back a response that got server message , but I need to know does socket io have such bulit in system ?

thanks.

Problem courtesy of: Ata

Solution

Yes, you can do that by passing a function as the last parameter to .emit.

Example from the "Sending and getting data (acknowledgements)" section of socket.io:

server:

var io = require('socket.io').listen(80);

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

client:

<script>
  var socket = io.connect();
  socket.on('connect', function () {
    socket.emit('ferret', 'tobi', function (data) {
      console.log(data); // data will be 'woot'
    });
  });
</script>
Solution courtesy of: go-oleg

Discussion

There is currently no discussion for this recipe.

This recipe can be found in it's original form on Stack Over Flow.