问题标签 [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 投票
18 回答
74872 浏览

有没有办法将数据从网络服务器推送到浏览器?

我当然知道 Ajax,但是 Ajax 的问题是浏览器应该经常轮询服务器以查找是否有新数据。这增加了服务器负载。

除了经常轮询服务器之外,还有什么更好的方法(甚至使用 Ajax)?

0 投票
8 回答
40254 浏览

ASP.NET 的 Comet 实现?

我一直在寻找在浏览器中实现类似 gmail 的消息传递的方法,并得出了Comet的概念。但是,我还没有找到允许我在 IIS 中执行此操作的良好 .NET 实现(我们的应用程序是用 ASP.NET 2.0 编写的)。

我找到的(或可能想到的)解决方案需要为每个用户留下一个正在运行的线程——这样一旦他收到消息,它就可以向他返回响应。当然,这根本无法扩展。

所以我的问题是 - 你知道以不同方式工作的 Comet 的 ASP.NET 实现吗?IIS甚至可以吗?

0 投票
1 回答
2177 浏览

来自 Tomcat 6 CometProcessor 的写入是非阻塞的

我有一个 CometProcessor 实现,它有效地对可能大量的客户端进行多播。当发生需要传播到所有客户端的事件时,CometProcessor 将需要遍历客户端列表并写出响应。如果写入响应阻塞,那么潜在的慢客户端可能会对事件的分布产生不利影响。例子:

更新:回答我自己的问题。来自 CometProcessor 的写入被阻塞:

http://tomcat.apache.org/tomcat-6.0-doc/config/http.html

请参阅页面底部的表格。

0 投票
8 回答
60960 浏览

彗星和 jQuery

我已经对使用 javascript 的服务器推送进行了一些研究,并发现普遍的共识是我正在寻找的是“彗星”设计模式。在 jQuery 之上构建的这种模式有什么好的实现吗?如果没有,这种模式有什么好的实现吗?不管这些问题的答案如何,从实现的角度来看,是否有关于这种模式的任何文档?

0 投票
3 回答
3194 浏览

Python 套接字的问题:如何在任何浏览器中获取可靠的 POST 数据?

我用 socket 模块编写了小的 Python+Ajax 程序(在最后列出)来研究异步通信的 COMET 概念。

这个想法是允许浏览器通过我的 python 程序互相实时发送消息。

诀窍是让“GET messages/...”连接打开,等待消息回复。

我的问题主要在于我通过 socket.recv 所拥有的可靠性......

当我从 Firefox 发布时,它运行良好。

当我从 Chrome 或 IE 发布时,我在 Python 中获得的“数据”是空的。

有人知道浏览器之间的这个问题吗?

某些浏览器是否注入了一些 EOF 或其他字符会杀死“recv”的接收?

这个问题有什么已知的解决方案吗?

Python 中的 server.py:

HTML+Javascript中的client.html:

0 投票
4 回答
4512 浏览

Safari 中是否可以使用 Http Streaming Comet?

通过 HTTP Streaming Comet,我的意思是“永久 iframe”/“永久 xhr”变体,在从服务器推送数据后不会关闭连接,而不是标准轮询和长轮询,后者关闭并重新发送新请求每个服务器推送事件。

我查看了 dojo.io.cometd 包,似乎它们只有轮询实现。我也找到了这个例子,但即使经过相当多的修改,它似乎也不能在 webkit 中工作(我让它在其他任何地方工作)。来自 safari 博客的这个公告似乎表明 xhr 是可能的,但我找不到任何代码或文档,也无法让它工作。

有谁知道在 Webkit 浏览器(Safari 和 Chrome)中实现 HTTP 流彗星的技术、脚本、库或演示?

更新

经过一番修改后,我发现需要做两件事才能让 http 流通过 XHR 在 Safari 中工作:

  • 响应需要有一个 Content-Type: multipart/x-mixed-replace
  • 在浏览器开始一致地显示更新之前,响应需要发送一些“噪音”字符。我假设这与填充一些内部缓冲区有关。

更新 2

我终于使用 iframe 技术让它在所有浏览器中工作。该解决方案需要注意的是,只有基于 WebKit 的浏览器才能接收 multipart/x-mixed-replace 标头。

0 投票
3 回答
1315 浏览

您会推荐哪些开源 comet/reverse-ajax 库与 Tomcat 5.5 一起使用?为什么?

我在 Jetty 6.0 中看到了解决 Comet/reverse-ajax 应用程序扩展的问题。

是否有任何其他库/框架可用于 Tomcat 5.5?

0 投票
1 回答
459 浏览

重新加载 Orbited 供电页面后 IE7 失败

我正在开发一个基于Orbited的网站,并且在使用 IE7 时遇到了一些烦人的行为。在 FF3 中一切正常,但在 IE7 中,如果我重新加载页面,我会得到一个反复出现的错误:

换句话说,当您第一次浏览该站点时,该站点可以在 IE7 中运行,但在重新加载后会中断。我正在运行 Orbited 0.7.0,并在 CometDaily 上遵循了本教程。我的代码与教程代码相同,但有以下例外:

  1. 我没有在 localhost 上运行该站点,而是使用具有真实域的服务器。当然,所有链接都会相应更新。
  2. 静态文件(index.html)由 Django/Lighttpd 在端口 80 上提供服务,而不是由 Orbited 守护程序提供服务。Orbited 在端口 8000 上运行。

现在是奇怪的部分。如果我在 localhost 上运行,则不会出现此问题。

我知道 Orbited.js 创建一两个 iframe 来与 Orbited 守护进程通信。我猜这里存在某种问题,但我在这方面的知识是有限的。

那么任何人都可以理解我的应用程序发生了什么吗?作为记录,我已经阅读了在元标记之后放置脚本标记以避免这个问题。可悲的是,它并没有解决我的问题。教程代码中甚至没有任何元标记,所以我添加了一个以确保。

BR //弗雷德里克

0 投票
1 回答
1886 浏览

与 Web 服务器的持久连接(如 Web 上的 AJAX)

我想创建一个与 Cometd 服务器对话的程序,以允许将数据推送到应用程序。

我已经使用 AJAX 在 Web 端完成了此操作,但我有点不确定使用 Cocoa 执行此操作的最佳方法。

我可以使用 NSURLRequest 和 NSURLConnection 建立标准连接,但是如何保持此连接处于活动状态,以便在需要时发送数据并在需要时获取推送的信息。

我什至会以正确的方式解决这个问题吗?

提前致谢

0 投票
9 回答
1430 浏览

Ajax“有新内容吗?如果有,更新页面” - 如何在不破坏服务器的情况下做到这一点?

这是一个简单的 javascript 案例,它不断询问“还有吗?” 就像一个四岁的孩子开车一样。但是,就像父母一样,如果你经常这样做,或者一次有太多孩子,服务器会在压力下崩溃。

您如何解决网页以每 5 秒的顺序查找新内容并允许更多访问者的问题?