问题标签 [comet]

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 投票
2 回答
568 浏览

comet - 我在哪里可以了解 Comet 和客户端推送方法?

我想学习如何从服务器和客户端实现基本的“彗星”或客户端推送方法,比如 meebo,我在哪里可以找到好的和清晰的规范?谢谢

0 投票
3 回答
1558 浏览

api - 服务器推送技术的 API 模型 (COMET)

我正在向 CppCMS 添加对服务器端事件的支持。我了解在通信级别上做什么的技术部分:客户端发送长轮询 XmlHTTPRequest,并等待响应,服务器接受连接并且在服务器端事件发生并将响应发送给客户端之前不响应。客户重复该过程。

但是,对于大多数 Web 开发人员来说,这太“低”了。有很多问题:我如何管理事件,我如何管理连接等等。

我想到了两种可能的模型:

  1. 定义了一些命名事件和服务器端,例如“134 号聊天室中的新消息”;当请求接受时,服务器端应用程序检查房间中的消息(例如在 DB 中),如果客户端没有新消息,它订阅事件并等待它。

    当其他一些客户端向服务器发布数据时,它会通知所有应用程序“134 号聊天室中的新消息”事件,它们会唤醒并将这些消息发送给客户端,依此类推。

    这个模型看起来仍然是相当“低级”的模型,但是它隐藏了所有的通知方法。

  2. 另一种选择是定义一些命名队列,以便每个客户端在连接到服务器时创建这样的队列并等待新消息。当某个客户端向“134 号聊天室”发布一条新消息时,在服务器端将其广播到连接到该“134 号聊天室”的所有队列,并将该消息传递给客户端。

    然而,有许多问题被提出:

    • 如何在单页级别管理队列和会话级别?
    • 如何删除队列并在其上创建超时?
    • 如果多个“窗口”订阅同一个队列会发生什么?
  3. 在服务器端创建一个持久对象,将服务器端事件和用户端事件粘合起来。它可以通过重定向到它的不同 XHR 请求进行通信。

    因此客户端 (JavaScript) 注册事件并使用 XHR 和服务器端调度的事件通知等待它们,直到页面被重建。

那么,我想知道,服务器端推送技术背后最流行和推荐的 API 模型是什么?

谢谢

编辑:添加了第三个选项

0 投票
3 回答
3381 浏览

comet - 为多人 JavaScript 游戏实现后端服务器的最简单方法?(彗星/长轮询)

我一直在用 JavaScript 编写一个游戏,现在是时候让它成为多人游戏了。我想使用 AJAX 长轮询来获取当前的游戏状态,以及实现大厅。

服务器只需要执行基本功能,例如将游戏状态存储在 mysql 数据库中、检索游戏状态以及格式化记分板。

我认为用 PHP 编写它是最简单的,但由于它会产生大量的 apache 进程,这将是一个坏主意。

你有什么建议吗?我正在寻找最直接的方法。

编辑:StreamHub 看起来不错,但社区版只允许 10 个并发用户。

0 投票
2 回答
475 浏览

javascript - Comet 支持多窗口的 JavaScript 库

是否有任何免费的Comet JavaScript 库允许多个窗口/选项卡重用相同的连接?换句话说,当您打开第二个窗口时,它会检测到您在同一域下打开了另一个窗口。它不会打开新连接,而是开始监听另一个窗口的连接。这样它就可以保持在浏览器的每个域连接限制内。

Lightstreamer似乎可以很好地处理这个问题,但我更喜欢开源的东西。

0 投票
3 回答
1322 浏览

javascript - gwt+comet 需要配置tomcat吗?

  1. 我指的是本教程http://www.jroller.com/masini/entry/a_comet_implementation_for_google 。使用comet时必须配置tomcat吗?
  2. gwt+comet 可以在托管模式下运行还是需要-noserver?
0 投票
4 回答
3895 浏览

php - 选择彗星服务器的问题

我想写一个使用彗星技术进行实时更新的php网站。

我有几个问题:

  1. 使用彗星服务器更好吗?彗星服务器哪个好?

  2. 对于彗星服务器(例如轨道),我必须首先安装基于python的轨道服务器,然后编写php文件来创建套接字以连接到彗星服务器。对?(Orbited.org 没有关于此的任何教程。)

0 投票
1 回答
135 浏览

php - 最大服务器文件访问频率

我正在尝试使用 Comet 长轮询方法在 PHP 中创建 AJAX 推送实现。我的代码涉及使用file_get_contents()重复读取文件以检查要发送给用户的任何消息。为了减少服务器负载,我使用了两个文本文件;一个包含实际命令,另一个充当“更改通知器”,它要么迭代 0-9,要么包含 UNIX 时间戳。我的问题是,我多久可以访问和读取一个小(只有几个字节)文件而不会使服务器超载?推送实现意味着我可以比每隔几秒请求一个文件更频繁地轮询更改,但仍然必须有一个限制。

如果有帮助,我正在使用 1&1 Home (Linux) 托管计划,它是共享托管。

0 投票
3 回答
1505 浏览

javascript - 道场的性能(日志记录、彗星、滑块)

我的 JavaScript 存在一些性能问题,并且在检测它方面没有取得多大成功。我尝试过的一件事是使用 firebug 的配置文件工具。它报告顶部的单个调用是对 dojo 的 log()。无奈,它报告了压缩脚本的行号,所以我不知道是什么导致了问题。但有趣的是,配置文件报告中 70% 的行用于 dojo 的 log() 调用,因此累积起来,它必须在那里花费大量时间。有没有办法关闭道场记录?

唯一可见的日志记录是每 1.5 秒出现一次的条目,这似乎是彗星的保活。我也在一个地方使用了 dojo 的滑块,但我没有看到任何证据表明这会导致性能下降。

我应该使用哪些其他工具来尝试识别 javascript 中的性能热点?我在 JavaScript 中的代码部分并不是非常大,所以如果是到服务器的往返行程确实导致了问题,我不会感到惊讶,但我也不知道如何检测它。

0 投票
2 回答
1383 浏览

javascript - Comet、responseText 和内存使用情况

有没有办法在不破坏 XHR 对象的情况下清除 XHR 对象的 responseText?

我需要保持对 Web 服务器的持久连接,以便将实时数据提供给浏览器。问题是,有相对大量的数据通过(每秒几百K),所以内存使用是一个大问题,因为这个连接必须保持打开至少几分钟。responseText 很快就变得非常大,即使我发回的 JSON 已经被压缩到尽可能小。

由于服务器端应用程序的工作方式,如果我使用 AJAX 样式的短轮询并在完成后销毁 XHR 对象,即使在解析数据所需的几毫秒内,我也会错过大量重要数据响应,创建一个新的 XHR 并将其发送出去。我没有使用重叠请求的选项,因为 Web 服务器一次只接受一个连接。(不要问。)所以 Comet 正是我需要的模型。

我想做的是解析从服务器返回的每个 JSON 块,然后清除 responseText 以便我可以继续使用相同的连接。但是,responseText 是只读的。它不能通过我找到的任何方法直接清空。

我在这里缺少图片的一部分吗?有谁知道我读完后可以用来释放 responseText 的任何技巧?还是服务器响应可以去其他地方?

我不包括代码,因为这实际上几乎是一个与代码无关的问题。生成 XHR 并处理返回数据的 Javascript 例程非常非常简单。

0 投票
6 回答
11562 浏览

python - 用 Python 在 Google App Engine 中实现 Comet/Server 推送

如何在 Python 中的 Google App Engine 中实现 Comet/Server 推送?