问题标签 [long-polling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 长轮询 - 确定何时有新数据的方法是什么?
假设我有一个聊天程序,每次有人发送消息时,都会锁定并写入一个全局文件。接收客户端有一个挂起的 xmlhttp 请求,该请求正在等待使用此构造返回新更新的文件:
将文件大小发送到客户端,然后在下一个轮询请求中发送回服务器是一个很好的方法,因为我们现在可以检查文件大小是否与已经发送回客户端的大小不同,所以我们知道有新数据。或者来回发送文件偏移量是一种更好的方法,以便它知道文件中的哪个位置来检查新数据?还是完全不同的方法,而不是使用全局“聊天”文件?
确定“可用新数据”的一般方法是什么
javascript - 使用 Comet 长轮询向服务器发送消息
将数据从客户端发送到服务器的最佳方式是什么?
我正在使用的示例代码来自如何实现基本的“长轮询”?
asp.net - Asp.Net Chat 服务器端轮询
直升机,
我已经使用 Comet 实现了一个聊天应用程序。请求在服务器上“挂起”,直到新消息到达。然后,它带着新消息返回客户端,然后再次访问服务器。
我的问题是:
为了检查新消息,我每 600 毫秒轮询一次数据库。我执行一个简单的查询“select...from messages where messageId > ' + lastMessageId.
此外,为了保持存在,我非常(非常)频繁地使用每个用户“LastKeepAliveTime”更新数据库。
SQL Server 事务日志变得越来越大,并且在某个时刻,我的聊天应用程序停止工作。
聊天用户不是注册用户,他们只是可以随时离开页面的随机用户。
谢谢亚龙
.net - 使用 SqlCacheDependency 获取实时更新?- ASP.NET
我想在网页上显示实时更新(基于由外部进程更改的数据库表中的状态字段)。根据我的研究,有几种方法可以做到这一点。
- 长轮询(彗星) - 这似乎实现起来很复杂
- 定期轮询 - 我可以让 AJAX 方法每 5 秒触发一次数据库命中以获取当前状态。但我担心这会有性能问题。
然后我读到了使用SqlCacheDependency
- 基本上缓存会根据表中的字段而失效。我假设我可以使用缓存失效时触发的事件向用户显示新更新?
什么是不会出现性能问题的简单解决方案?
javascript - 提高长轮询 Ajax 性能
我正在编写一个 web 应用程序(仅与 Firefox 兼容),它使用长轮询(通过 jQuery 的 ajax 功能)将或多或少的持续更新从服务器发送到客户端。我担心长时间运行它的影响,比如一整天或一夜之间。基本的代码骨架是这样的:
(半秒的“睡眠”是为了让客户端在更新快速返回客户端时不会敲击服务器——它们通常是这样。)
在让它运行一夜之后,它往往会使 Firefox 爬行。我一直认为这可能部分是由较大的堆栈深度引起的,因为我基本上已经编写了一个无限递归函数。但是,如果我使用 Firebug 并将断点放入fetch
,看起来情况并非如此。Firebug 向我展示的堆栈只有大约 4 或 5 帧深,即使在一小时后也是如此。
我正在考虑的解决方案之一是将递归函数更改为迭代函数,但我不知道如何在不旋转的情况下在 Ajax 请求之间插入延迟。我查看了JS 1.7“yield”关键字,但我无法完全理解它,以确定它是否是我需要的。
最好的解决方案是定期对页面进行硬刷新,比如每小时一次吗?是否有更好/更精简的长轮询设计模式,即使在运行 8 或 12 小时后也不会对浏览器造成伤害?或者我应该完全跳过长轮询并使用不同的“不断更新”模式,因为我通常知道服务器多久会回复我一次?
javascript - 使用 iframe 进行 ajax 长轮询有什么好处?
使用 iframe 进行 Comet 长轮询有什么好处?为什么不在拉入主页的脚本文件中保留异步 ajax 请求?谢谢。
ajax - AJAX 实时和协作
我正在尝试创建实时和协作应用程序,例如 - google wave。当 user1 同时写东西时,它会显示在 user2 屏幕上。
我开始了一些研究,并找到了一些使用 Ajax 的方法 -
1.每 X 秒向服务器发送请求并检查“发生了什么”
2.timeout - 长请求,问题 - 我看到我只能用 IE8 做到这一点
还有其他选择吗?最好的方法是什么?
使用方式 2,这是真的我只能用 IE8 做到这一点吗?
约西
java - 长轮询netty nio框架java
如何使用netty框架进行长轮询?比如说我拿http://localhost/waitforx
但是waitforx
是异步的,因为它必须等待一个事件?例如,它从阻塞队列中获取一些东西(只能在队列中有数据时获取)。从队列中获取项目时,我想将数据发送回客户端。希望有人可以给我一些提示如何做到这一点。
非常感谢
php - 自动更新页面的代码大纲
我想弄乱实时信息,并且我想复制一个非常标准的功能:
当您在单个问题视图中输入您的答案时,它会出现在这里
它也出现在推特上“此搜索中有 5 条新推文:点击更新”
我非常精通服务器端和客户端代码,而我正在寻找的是这种情况如何发生的基本大纲(甚至不是伪代码,但可能是简单的英语)。
服务器上是否有每分钟都在运行的 CRON 作业,它向页面上的长轮询 AJAX 位发送信号?
页面本身是否轮询服务器?
欢迎任何和所有解决方案。谢谢!
python - Tornado 和 Prototype 的异步 COMET 查询
我正在尝试使用 Tornado 和 JS Prototype 库编写简单的 Web 应用程序。因此,客户端可以在服务器上执行长时间运行的作业。我希望这项工作异步运行 - 以便其他客户可以查看页面并在那里做一些事情。
这是我所拥有的:
这是服务器部分。它有主视图(显示很少的问候语、当前服务器时间和 ajax 查询的 url,执行长时间运行的作业。如果您按下按钮,则会执行长时间运行的作业。服务器挂起 :( 我无法查看任何页面,而此作业正在运行。这是模板页面:
我究竟做错了什么?如何使用 Tornado 和 Prototype(或 jQuery)实现长池化
PS:我看过Chat example,但它太复杂了。无法理解它是如何工作的:(
PSS 下载完整示例