Что делает конфиг "xhr-polling" в socket.io? - PullRequest
10 голосов
/ 12 февраля 2012

У меня есть сервер node.js с socket.io:

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 на герою.

Ответы [ 2 ]

15 голосов
/ 08 августа 2012

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

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

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

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

3 голосов
/ 29 мая 2012

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

...