简单发出的套接字和volatile发出的套接字有什么区别?

use*_*486 6 javascript sockets node.js socket.io

这是以下问题的后续问题;

为什么这个updateSockets()函数接受一个看起来像这样的参数?

在下面的代码中,套接字使用volatile来发出.

var updateSockets = function(data) {
  // adding the time of the last update
  data.time = new Date();
  console.log('Pushing new data to the clients connected ( connections amount = %s ) - %s', connectionsArray.length , data.time);
  // sending new data to all the sockets connected
  connectionsArray.forEach(function(tmpSocket) {
    tmpSocket.volatile.emit('notification', data);
  });
};
Run Code Online (Sandbox Code Playgroud)

如果代码被更改以使其成为tmpSocket.emit('notification', data);什么怎么办?tmpSocket.volatile.emit('notification', data);和之间有什么区别tmpSocket.emit('notification', data);

Sla*_*anX 5

Socket.io文档:

发送易失性消息

有时可以删除某些消息.假设您有一个应用程序,显示关键字bieber的实时推文.

如果某个客户端尚未准备好接收消息(由于网络速度缓慢或其他问题,或者因为它们通过长轮询连接并处于请求 - 响应周期的中间),如果它们没有收到所有推文与bieber相关的申请不会受到影响.

在这种情况下,您可能希望将这些消息作为易失性消息发送.

基本上,如果您不关心客户端是否收到数据,则将其作为volatile发送.