Articles of 长轮询

socket.io服务器在注册客户端断开连接时出现延迟

我有一个socket.io连接使用xhr作为唯一的传输。 当我在浏览器中加载应用程序(以chrome和ff进行testing)时,套接字连接,一切正常,直到我离开页面。 如果我重新加载浏览器,我可以看到客户端发送'disconnect'事件,但服务器断开连接事件在很长一段时间内不会触发(假设客户端心跳超时)。 这是一个问题,因为我在客户端断开连接时在服务器上做了一些清理工作。 如果客户端重新加载,我会在断开连接之前获得多个连接事件。 我已经尝试在窗口的'beforeunload'事件中手动发送客户端的断开连接消息,但无济于事。 有任何想法吗? 我debugging了socket.io服务器,并且我可以确认Manager.prototype.onClientDisconnect只是因为“closures超时”原因而被触发。

长时间轮询从浏览器中获取超时

我试图使用node.js服务60秒的长轮询请求。 我面临的问题是,浏览器正在超时。 相同的设置工作30秒。 有人可以build议如何实现这一目标吗? 使用JQuery作为JS框架。 谢谢…

Node.js与Socket.io – 长轮询失败,并抛出“代码”:1,“消息”:“会话ID未知”响应

我坚持为什么被移动到IIS7服务器的nod​​e.js应用程序现在失败。 我知道IIS7不支持Web套接字,但我的理解是,如果Web套接字不可用,socket.io将回退到长轮询。 所以现在,当用户试图按下通常需要套接字或长轮询的特定button时,我会得到如下所示的内容: XHR finished loading: POST "https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777964357-6&sid=QWsESi0c9ih7WMWKAAAC". GET https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777963494-5&sid=QWsESi0c9ih7WMWKAAAC 400 (Bad Request) XHR finished loading: GET "https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777963494-5&sid=QWsESi0c9ih7WMWKAAAC". OPTIONS https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777965127-7&sid=QWsESi0c9ih7WMWKAAAC XMLHttpRequest cannot load https://localhost:817/socket.io/?EIO=2&transport=polling&t=1433777965127-7&sid=QWsESi0c9ih7WMWKAAAC. Invalid HTTP status code 400 当我单击GET或XMLHttpRequest时,我可以看到响应是"code":1,"message":"Session ID unknown" ,我不明白,因为我可以看到SID。 当我点击列出的失败选项的代码时,我发现问题来自Request.prototype.create,即xhr send: xhr.send(this.data); 有没有人有任何想法可能会导致这些事情? 任何澄清将不胜感激! 非常感谢!

开始使用“长轮询”

我想开始在我的网站上实施一些“长期投票”技巧。 基本上我需要一个主要的function,刷新HTML列表是否新的数据已被添加到数据库。 对于我的设置,我有一个带LAMP环境的入门级VPS服务器。 我知道PHP,JS和我熟悉Unix系统。 什么才是正确的技术来实现一些长期投票效果? 非常感谢任何input

socket.io强制断开XHR轮询

我有一个客户端/服务器应用程序使用服务器上的nodejs和socket.io作为连接机制。 由于与我的应用程序相关的原因,我希望每个浏览器只有一个活动连接,并拒绝来自其他选项卡的所有连接,这些连接可能在会话期间稍后打开。 这对于WebSockets非常有用,但是如果浏览器不支持WebSockets,而是使用XHR-polling,那么断开连接就不会发生,所以如果用户只是刷新页面,这不会被解释为重新连接(我有一个延迟重新连接和会话恢复),但作为一个新的选项卡,在连接被终止,因为这个相同的选项卡所做的旧连接仍然是活动的。 我正在寻找一种方法来有效地结束来自客户端的连接,每当发生刷新。 我尝试绑定到beforeunload并在客户端调用socket.disconnect() ,并发送一个像socket.emit('force-disconnect')并触发从服务器断开连接没有成功的消息。 我在这里错过了什么? 感谢你的帮助! 我读过这个问题 ,并没有find它对我的具体情况有用。

在node.js中进行长轮询 – 如果没有数据可用,如何“超时”挂起的请求?

我试图在Node.js中实现一个http长轮询服务器,并且不知道如何在超时达到时closures/closures挂起的请求。 我想到了三种可能的解决scheme: 将pendingRequest存储在一个散列/对象中,然后调用setIntervall,这样如果时间戳太旧,每隔1/2 / xs的pendingRequest就会被删除。 在套接字连接上设置超时 这两个解决scheme似乎都不是很合理,那么Node.js如何实现这样的function呢?

关于将nodejs与php应用程序集成的build议

我有一个现成的PHP应用程序(使用Kohana框架),我想长时间轮询。 从我读的一些东西看来,使用PHP进行长时间轮询并不可取,使用类似nodejs的东西是一个更好的select。 我的问题是什么是将nodejs(或其他适合长时间轮询的工具)与现有应用程序集成的最佳方式? 澄清我的应用程序基本上是一个浏览器插件,您可以用来发送数据给其他人的团体。 当数据发送时,我希望收件人,如果他们在线,也有浏览器插件,立即接收这些数据,并得到通知。

“xhr-polling”configuration在socket.io中做什么?

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

长期投票的严重缺点?

对于交互式Web应用程序,像Websockets这样的东西越来越受欢迎。 然而,由于客户端和代理世界并不总是完全兼容,所以通常会使用像“Socket.IO”这样的复杂框架,对于任何可能会禁用其他框架的情况隐藏几种不同的机制。 我只是想知道一个正确实现的长轮询的缺点是什么,因为今天的服务器比如node.js很容易实现,并依赖于很好的支持旧的http技术(尽pipe长时间的轮询行为本身可能会打破它)。 从高层次来看,长时间轮询(尽pipe有一些额外的开销,适用于中等stream量的应用程序)类似于WebSockets所做的真正的推送行为,因为服务器每当他喜欢(尽pipe有一些超时/心跳机制)实际发送它的答案。 所以我们有更多的开销,因为我猜测TCP / IP更多的确认,但没有像频繁轮询那样的持续stream量。 而使用事件驱动的服务器,我们将不会有线程开销来阻止连接。 那么是否还有其他困难的缺点,迫使像聊天这样的中等stream量应用使用WebSockets而不是长时间轮询?