Что делает конфигурация" xhr-polling " в сокете.Ио?

У меня есть узел.сервер js с сокетом.Ио:

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

// assuming io is the Socket.IO server object
io.configure(function () { 
      io.set("transports", ["xhr-polling"]); 
      io.set("polling duration", 10); 
    });

io.sockets.on('connection', function(socket){
  console.log('connected: %s', socket.id);
  ...
}

С XHR-опросом и длительностью опроса 10 секунд означает ли это, что новое соединение будет вызываться каждые 10 секунд? Если да, то как я могу отслеживать пользователей, если они будут отключать? Я запускаю node.js на heroku.

2 ответов


xhr-опрос означает, что ваш сервер будет ждать 10 секунд на любом полученном сообщении, что у него нет ответа перед ответом вместо отправки пустого ответа. Таким образом, если у вашего сервера нет информации для возврата через 10 секунд, он ответит пустым ответом. Вы можете прочитать больше здесь : опроса

Я лично использую XHR-опрос в качестве резервной опции из WebSockets в приложении на nodejitsu (другой узел хостинга как в Heroku) и он работает нормально. Единственное, что это событие "on connection", которое занимает около 3-8 секунд, а не мгновенное, как в моем приложении WebSocket.

нет нового соединения, которое создается на каждом новом опросе, это просто способ, которым только один GET или POST отправляется на сервер каждые 10 секунд, вместо того, чтобы опрашивать сервер каждый .5 секунд, чтобы иметь приложение" в реальном времени". Если сервер ответит менее чем за 10 секунд, будет еще один опрос отправлено подготовить следующий ответ.

Я надеюсь, что это поможет вам. Хорошего дня.


socket.io автоматически подключает клиентов.