问题标签 [ajax-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.

0 投票
1 回答
872 浏览

ruby-on-rails - 用户在聊天室中(通过简单轮询更新聊天)

我们使用简单的 Ajax 更新在 Rails 中实现了一个简单的聊天室功能。现在,在每个聊天室中,一条消息都属于特定用户。我们想要显示用户列表(类似于用户存在)。请提出方法。我们没有使用 Jabber、XMPP 等。

聊天室模型是:

消息是每个用户发送的聊天记录。

消息模型为:

用户模型是:

请建议方法

0 投票
4 回答
1840 浏览

javascript - Javascript 投票服务器。这会导致堆栈溢出吗?

我不太熟悉每个浏览器上每个 javascript 实现的细节。但是我知道使用 setTimeout,传入的方法会在单独的线程上调用。那么在方法内部递归使用 setTimeout 会导致其堆栈无限增长,直到导致堆栈溢出?或者它会创建一个单独的调用堆栈并在失去焦点后销毁当前帧?这是我想知道的代码。

我想每隔一秒左右轮询一次服务器,但不想通过“阻塞循环”浪费 CPU 周期——我也不想设置用户在浏览器死机之前可以访问页面的时间限制。

编辑

使用萤火虫,我设置了几个断点,通过查看“脚本 - >堆栈”面板看到调用堆栈实际上只是“pollServer”,它不会在每次调用时增长。这很好 - 但是,JS 的任何其他实现是否有不同的行为?

0 投票
3 回答
1450 浏览

ruby-on-rails - Ruby on Rails 中的在线用户

如何检查用户是否在线并显示在线用户列表的最简单方法是什么?

我能想到的唯一方法是一些定期轮询服务器来更新最后一个动作时间戳,当最后一个时间戳超过 xx 之前,用户被认为是离线的。但这似乎不是太有效的解决方案。

0 投票
2 回答
4760 浏览

php - 尝试使用 JavaScript 每 3 分钟调用一次函数

我有一个返回整数的函数(社区站点上用户的当前信誉分数)。这个数字通常会根据他们的评论和提交的投票方式而上升或下降。我想每 30 秒左右“轮询”一次,看看它是否发生了变化,如果是,更新我正在显示的数字。

在另一个 StackOverflow 线程中,我发现这个 JavaScript 片段看起来很有用:

我只是用我的函数替换 /mylongrequestfile 吗?我正在尝试,但效果不佳。如何使用此代码或其他代码片段每 30 秒获取并显示此值?

0 投票
1 回答
3054 浏览

ajax - 关闭长轮询连接,jQuery-ajax

背景
我使用支持长轮询的类似 Tornado 的服务器。用户访问的每个新网页都会对服务器设置一个长轮询,如下所示:

问题
我现在将依赖从 Fiddler 获得的数据来监控从我的浏览器发出的所有请求(目前为 FF)。

  1. 第 1 页已加载并发出长轮询请求,现在在服务器端空闲。
  2. 我单击第 2 页的链接,该页面已加载并设置了一个长轮询请求,但来自第 1 页的长轮询请求仍在服务器端空闲(根据 Fiddler)。

这意味着当点击页面时我将堆叠所有长轮询调用,因此最终在服务器上有大量活动连接(或者它们可能共享连接?)

我的想法
- 因为它是一个类似 Tornado 的服务器(使用 epoll),它可以处理相当多的连接。但在我看来,这一事实不可利用。我的意思是,对于这种情况,我不希望服务器超时(如果客户端消失了)。
- 我知道那些独立页面更好地使用一个共同的头部,并且只通过 ajax 调用交换内容,但我们今天使用的这种设计不是我的调用......
- 解决这个问题的最佳方法可能是重用连接(很难我认为关闭)或在浏览器离开页面后立即关闭(您单击另一个页面)。

谢谢
——MyGGaN

0 投票
4 回答
2441 浏览

php - ajax:不等待响应,而是定期检查

我有一个 PHP 进程需要很长时间才能运行。我不希望调用它的 AJAX 进程等待它完成。当 PHP 进程完成时,它将在数据库中设置一个字段。应该有某种 AJAX 轮询调用来定期检查数据库字段并设置消息。

如何设置 jQuery AJAX 调用来轮询而不是等待?PHP 脚本是否必须做任何特别的事情?

0 投票
1 回答
382 浏览

jquery - jQuery:每次将不同的数据传递给periodicalupdater?

在我的设置中,所有条目的 id 都将被获取(例如分配给变量ids=2,5,7,9,11)并传递给 periodicalupdater 以发送到 php 脚本。问题在于,当通过 ajax 添加新条目时,id 列表会随着时间而变化。如何在每次执行时将更新的 id 条目列表传递给 periodicalupdater?根据我的观察,它第一次运行时,数据被“缓存”或一次又一次地捕获和重用,并且ids在每次“执行”之前不会重新获取变量()。

或者,如果不能,是否有另一个插件或代码可以做到这一点?我只是想通过 ajax 将条目 id 列表发送到服务器脚本,该脚本会每隔一段时间返回一个 xml 文件进行处理(仅在有任何更改的情况下)。

谢谢你的帮助!:)

0 投票
2 回答
1311 浏览

php - 如何检测传入的聊天消息?

我正在使用 PHP、AJAX、MySQL 数据库和大量 jQuery 来构建基于 Web 的聊天系统(类似于 Facebook 聊天)的原型。我被困在如何“收听”传入的聊天......什么时候知道有人试图和我聊天......并且知道这是一个新的聊天,而不是现有的聊天。

现在,我正在轮询数据库表中是否有新的插入,但似乎效率很低……服务器开销很大。

例如,有没有办法在 MySQL 数据库的表中插入一行时接收通知,这样我就可以收到通知,然后查看插入的内容,而不是不断轮询?

如果有更好更有效的方式来建立这种一对一的聊天关系,请给我一些建议。

谢谢, 赫里斯托

0 投票
1 回答
213 浏览

twitter - 每当更新推文时如何触发事件

我想知道当特定用户更新其推文时如何触发事件(例如,将来自特定用户的推文存储在文本文件中或邮寄等)。我们是否需要每隔几秒钟轮询一次更新,或者是否有其他出路。

0 投票
1 回答
1468 浏览

javascript - 如何最好地在 JavaScript 中实现轮询消费者模式

背景

早在 5 月,我就在 WebKit 上报告了一个关于内存保留问题的问题。看起来问题可能是由于 Web Inspector 本身造成的,但我还不相信。

问题

一个问题浮出水面,我的 JavaScript 应用程序实现了“轮询消费者”模式,以便在数据可用时获取数据。问题是记忆被保留并全天增长。JavaScript 逻辑如下所示:

  1. 获取数据并给我回电话
  2. 当我被回调处理数据然后执行步骤 1

这是在 JavaScript 中实现轮询消费者的合理方式吗?顺便说一句,我正在使用 jQuery 的 ajax 函数,这当然可能有它自己的问题。此外,我使用 jQuery 代理作为成功处理程序,因此我认为通过范围保留应该不是问题。我也在不使用代理的情况下观察到了这个问题。一些代码: