任何人都可以向我解释socket.io/nodejs中的“volatile”消息吗?

时间:2011-06-29 16:21:53

标签: node.js socket.io

在新的socket.io v0.7中,有一个新功能“易失性消息”。

在“如何使用”中,他们写道:(在http://socket.io/#how-to-use

  

发送易变信息。

     

有时可以删除某些邮件。假设您有一个应用程序显示关键字bieber的实时>推文。

     

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

     

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

我认为volatile是不一致的,所以为什么他们告诉我们应该使用volatile消息来表示我们不能错过的消息类型?那些默认消息呢?我该怎么做以确保该消息将传达给客户?

此外,我还想问一下xhr-multipart传输。我没有在v0.7中的传输列表中看到它。被删除了吗?

1 个答案:

答案 0 :(得分:12)

就像它说通常socket.io跟踪它收到的消息,如果我用户错过了一条消息,它将再次发送。如果您不希望这种开销(额外工作),您可以使用易失性消息,用户可能会错过消息。如果您还希望收到消息,则可以使用确认(回调)=>

服务器

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

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

<强>客户端:

<script>
  var socket = io.connect(); // TIP: .connect with no args does auto-discovery
  socket.on('connection', function () {
    socket.emit('ferret', 'tobi', function (data) {
      console.log(data); // data will be 'woot'
    });
  });
</script>

我也找不到xhr-multipart,但我想如果你真的想知道你可以问Guille吗?