我有一个用node.js编写的带有计时器功能的应用程序。无论何时,服务器都会将新的时间值发送给每个连接的客户端。尽管这在localhost上可以正常运行,但在在线托管时却非常不稳定。客户端不会立即更新,该值有时会一次跳两三秒。
但是,我发现,如果我(使用setInterval)将计时器数据重复发送到客户端,则它可以完美运行而不会在任何地方产生任何延迟。
有人知道为什么会这样吗?对我而言,为什么不更频繁地发送相同的数据可以解决此问题是没有意义的。如果有的话,这应该不会更慢吗?我当时想我可以使用这种方法,并让客户端在服务器更新时通知服务器,但这似乎不必要且效率低下。
我对node.js还是很陌生,但这使我感到困惑。任何见识将不胜感激。
答案 0 :(得分:0)
您在哪里托管它?它支持websockets吗?一些主机不支持/不允许它们。我的猜测是您的主机不允许使用websockets,而socket.io正在回退到轮询传输。
在浏览器中,您可以找到websocket连接并在开发人员工具中对其进行检查: How do you inspect websocket traffic with Chrome Developer Tools?
如果它没有经历101 Switching Protocols
http状态以成功将第一个请求升级到websocket,则您会在开发人员工具中看到轮询请求。