Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 有人能给我解释一下吗;易挥发;socket.io/nodejs中的消息?_Node.js_Socket.io - Fatal编程技术网

Node.js 有人能给我解释一下吗;易挥发;socket.io/nodejs中的消息?

Node.js 有人能给我解释一下吗;易挥发;socket.io/nodejs中的消息?,node.js,socket.io,Node.js,Socket.io,在新的socket.io v0.7中,有一个新特性“volatile message” 在《如何使用》一书中,他们这样写道:(at) 发送不稳定的消息 有时某些消息可能会被删除。比如说,你有一个应用程序,它可以为关键字bieber显示realtime>tweets 如果某个客户端不准备接收消息(因为网络慢或其他问题,或者因为他通过长轮询连接并且处于请求->响应周期的中间),如果他没有接收到与比伯相关的所有推文,那么应用程序>不会受到影响。 在这种情况下,您可能希望将这些消息作为易失性消息发送 因

在新的socket.io v0.7中,有一个新特性“volatile message”

在《如何使用》一书中,他们这样写道:(at)

发送不稳定的消息

有时某些消息可能会被删除。比如说,你有一个应用程序,它可以为关键字
bieber
显示realtime>tweets

如果某个客户端不准备接收消息(因为网络慢或其他问题,或者因为他通过长轮询连接并且处于请求->响应周期的中间),如果他没有接收到与比伯相关的所有推文,那么应用程序>不会受到影响。 在这种情况下,您可能希望将这些消息作为易失性消息发送

因为我认为volatile有点不一致,所以为什么他们告诉我们应该使用volatile消息作为我们不能错过的消息类型呢?默认消息呢?我必须做些什么来确保信息能够送达客户


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

就像它说的那样,socket.io会跟踪它接收到的消息,如果用户错过了一条消息,它将再次发送。如果您不想要这种开销(额外的工作),您可以使用volatile消息,但代价是用户可能会错过消息。如果您还希望按顺序接收消息,则可以使用确认(回调)=>

服务器:

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>
客户端:

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>

var socket=io.connect();//提示:。不带参数的连接执行自动发现
socket.on('connection',function(){
socket.emit('ferret','tobi',函数(数据){
console.log(数据);//数据将为'woot'
});
});

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

我相信volatile是一个你可以使用的频道,但默认情况下它使用的是更安全的频道。这个答案让我非常不安。TCP/IP协议本身确保消息已被接收(当然,数据包已被接收)。所以,除非websocket实现中有一些大漏洞,否则就没有必要发送不易失性的消息。请进一步解释,这并不比文档更详细。@TomášZato除了websocket之外,socket.io还支持其他几种协议,例如,在长轮询的情况下,客户端并不总是连接到服务器。