我有一个带有 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。
最佳答案
xhr-polling 意味着您的服务器将等待 10 秒收到任何 POST 的 GET,它在回答之前没有答案,而不是发回空响应。因此,如果您的服务器在 10 秒后没有信息可返回,它将以空响应返回。 你可以在这里阅读更多:Long polling
我个人在 nodejitsu(另一个 Node 托管,如 Heroku)上的应用程序中使用 xhr-polling 作为 WebSockets 的后备选项,它工作正常。唯一的问题是“连接时”事件大约需要 3-8 秒,而不是像我的 WebSocket 应用程序那样即时。
每次新轮询时都不会创建新连接,这只是每 10 秒只向服务器发送一个 GET 或 POST 的方式,而不是每 0.5 秒轮询一次服务器以获得“实时”应用。如果服务器在不到 10 秒内回答,将发送另一个轮询以准备下一个回答。
我希望这会对你有所帮助。 祝你有美好的一天。
关于node.js - socket.io 中的 "xhr-polling"配置有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9244225/