什么" xhr-polling" config在socket.io中执行?

时间:2012-02-11 21:29:56

标签: node.js socket.io long-polling

我有一个带socket.io的node.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-polling和10秒的轮询持续时间,这是否意味着每10秒钟会调用一个新连接?如果是这样,如果用户断开连接,我该如何跟踪用户?我在heroku上运行node.js.

2 个答案:

答案 0 :(得分:15)

xhr-polling意味着您的服务器将在收到的任何GET收到的时候等待10秒,它在回答之前没有答案,而不是发送回空的响应。因此,如果您的服务器在10秒后没有信息要回馈,它将以空响应回复。 您可以在此处阅读更多内容:Long polling

我个人使用xhr-polling作为来自nodejitsu(另一个托管类似Heroku的节点)上的应用程序中的WebSockets的后备选项,并且它工作正常。唯一的问题是“on connection”事件需要大约3-8秒而不是像我的WebSocket应用程序那样是即时的。

每次新轮询都没有创建新连接,这只是每10秒只向服务器发送一次GET或POST的方式,而不是每隔0.5秒轮询服务器一次“实时”应用程序。如果服务器在不到10秒的时间内应答,则会发送另一个轮询以准备下一个答案。

我希望这会对你有所帮助。 祝你有个美好的一天。

答案 1 :(得分:3)

socket.io自动重新连接客户端。