问题标签 [cometd]

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 回答
347 浏览

c - C http服务器编程

我正在尝试将数据从服务器直接推送到客户端的 php 网页。我已经用谷歌搜索过这个问题很多次了,我不想使用 ajax 推送引擎或其他东西,比如 cometD(如果你知道我在说什么)。我想知道是否有任何方法可以在我的服务器上放置一个程序,将数据发送到所有连接的客户端。我更喜欢用 c 或 c++ 或 c# 来完成,我可以自己编程我只是想如果它可能以及如何。

0 投票
1 回答
899 浏览

grails - 为什么我得到多个客户端:只有 1 个客户端连接时,来自 cometd 的真实建议?

我正在努力将 CometD 集成到 Grails 2.0 应用程序中(通过创建一个新插件 - 我没有使用现有的 cometd 插件,因为它现在看起来很破碎)。我相信我已经正确配置了所有内容。我遇到的是,当浏览器连接时,初始元/握手成功返回。但是,之后的每个元/连接调用都会返回多客户端建议设置为 true,从而关闭长轮询连接。然后每 2 秒发生一次(我相信的默认间隔)。

正如我所说,我使用的是 Grails 2.0,tomcat 7 是 Grails 默认使用的。

这是我目前看到的:

调用 /meta/handshake

这是返回的有效载荷:

我已经验证了 cookie 是在浏览器中设置的。随后对 /meta/connect 的调用如下所示:

每个请求都会更改请求有效负载中的内容长度和 id。前 3 个电话返回:

呼叫 1:

呼叫 2:

呼叫 3:

从那时起,返回的每条消息都与上一条完全相同。我只打开了一个浏览器窗口/标签。

这是 web.xml 文件的适用部分的副本:

BuildConfig.groovy:

最后是 CometdGrailsPlugin.groovy 的 doWithSpring 部分:

希望这不是太多的信息。在过去的几天里,我一直在试图解决这个问题,并且已经没有想法了,真的可以使用一些帮助

0 投票
1 回答
911 浏览

jquery - CometD + Java + jQuery:一次调用发布太多

您好,我遇到了下一个问题,使用 cometd + jquery + java 在广播消息时进行了一些测试。

这是我的 web.xml,我使用的是彗星的 Annotations 实现:

这是我注册的服务:

这是我用来订阅和发布的 JS jQuery 代码(是更大对象的一部分,所以我只是粘贴与此相关的主要内容):

好吧,在尝试通过控制台运行方法 publishBroad 之后,它实际上运行了,但是在服务器中只需单击/请求 450-500 次(是的,它只是从浏览器到 java 服务器的一个请求,450-500 次仅在服务器端重复并在响应中多次到达浏览器)!

我做错了什么?我正在使用来自 cometd 官方网站的最新 Cometd.js 和 jquery.cometd.js。

此外,当我在控制台中检查这一点时(我使用 JBoss AS7),我留下了一些输出日志行以查看我的调用是否进入了方法(Sys out println 说 The Channel is:. 它还显示日志行 450在 JBoss 控制台中 -500 次!

谁能帮我解决这个问题??

谢谢!!

0 投票
1 回答
555 浏览

excel - 加载项 Express RTD 刷新问题

Excel AddIn 使用 Add-In express,VS2010,cometd.net 与 Cometd 服务器和 Tom cat 对话 在 RTDInitialize 事件处理程序中,我登录 Tom Cat 并连接到 cometd 服务器,我使用类凭据的实例来记住它已登录IsLoggedOn 为 true) 和 sessionID。

在主题的 RefreshData 处理程序中,如果尚未注册,我将注册到 cometd 服务器。然后我会订阅汤姆猫的主题。现在,当用户从 Excel 中删除 RTD 函数时,会调用 DisconnectData 处理程序,在其中我断开与 Cometd 服务器的连接,从 Tom Cat 注销,清除 sessionID。下次,当用户再次进入 RTD 函数时,它将调用 RTDInitialize 事件处理程序,登录并连接其中 IsLoggoned 设置为 true 并更新 sessionID。奇怪的是,在第二次登录后,在 refreshData 中,我检查了凭据,IsLogged 变为 false 并且 sessionID 为空,就像第一次注销时一样。有谁知道为什么?不知道我是否说清楚。谢谢

0 投票
1 回答
62 浏览

java - 阻止本地接收已发布的消息

设置:

一个服务器类(AbstractService 的扩展) 一个 Cometd 客户端(自定义 C 实现,但与此问题无关)

小问题:如果我的服务器类发布到它自己的频道,它的 handleMessage 函数被调用。一般来说,我并不真正希望这样做,但我可以解决它(服务器不需要知道服务器何时发送消息)。我可以使用 ServerSession.deliver 代替发布吗?

真正的问题:在我的客户端上,我在服务器类的通道上向服务器发送一条消息。服务器的 handleMessage 函数被调用,但是消息也被发送回原始客户端。有没有办法配置服务器,使消息不会发送回原始客户端?

我看到了 Extension 类,但这似乎只比向单独的客户端发送消息高一级操作(如果我在这里杀死一条消息,它不会被发送到任何客户端,包括服务器)。

有任何想法吗?提前致谢!

0 投票
1 回答
939 浏览

.net - 如何从 cometd.NET 客户端获取 BAYEUX_BROWSER cookie

我正在使用 cometd.net 客户端,服务器端使用 cometd java。握手后,服务器会返回一个 json 有效载荷,在响应头中,有 Set-Cookie: BAYEUX_BROWSER=533bkb4ydvb9rti9gz9zxs3fgfv,如何从客户端获取这个?我看到json有效负载中有clientid,但这不是bayeux_broswer。谢谢

0 投票
1 回答
469 浏览

jquery - Jquery 的 Bayaux 协议实现


我们有一个在 jQuery 上运行的应用程序。在这方面,需要实现Bayaux 协议。但是据我所知,只有DOJO以 cometd 的形式实现了 Bayaux协议

由于我们完全依赖于 jQuery,我们不能仅仅为此实现导入整个dojo 工具包版本。

我的问题是 -
是否有针对 Jquery 的 Bayaux(cometd) 实现?
如果没有,是否有任何提供此实现的微框架?
如果不是,我可以从 Dojo 工具包中提取任何与 Bayaux 相关的内容并排除其他所有内容吗?

0 投票
1 回答
869 浏览

php - Are there any mature PHP clients for Bayeux / CometD?

I'm in the process of evaluating different AJAX push servers, one of them of course is CometD - which uses the Bayeux protocol. Since the application server code will be based on PHP 5.3, it would be great not to reinvent the wheel and use an existing library to publish data via CometD.

The only class I found so far is Phomet. However, it is not maintained anymore, obviously still contains debug code and also sometimes produces errors with the latest CometD server (2.3/2.4). Any recommendation is much appreciated! Maybe somebody also came across Phomet and improved it?

0 投票
2 回答
842 浏览

jboss6.x - JBoss 6 上的 CometD 演示

我计划在运行在 JBoss AS 6 上的应用程序中使用 Cometd 库。因此我下载了 cometd 2.4.0 并尝试将示例战争(来自 cometd-demo/target)部署到我的 AS。我知道如果不进行修改这是不可能的,所以我在 web.xml 中进行了更改:

  1. 在 web-app 标记中更改为 servlet 3.0(它最初是 2.5)。使用CometD 常见问题解答中的完整标签。基于此描述,web.xml 中已经存在的未注释延续过滤器

  2. 基于常见问题解答,添加了支持异步的标签。但是,这会导致问题:如果我只是取消注释,则无法解析 web.xml。我发现这是由于 XML 中的标签顺序造成的,因此将支持异步的标签向下移动,就在启动时加载标签之后。但是,Jboss 仍然会抛出异常:

错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/cometd-demo-2.4.0].[cometd]] Servlet.service() for servlet cometd 抛出异常:java。 lang.IllegalStateException:此请求正在使用的 servlet 或过滤器不支持异步操作

错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/cometd-demo-2.4.0].[cometd]] Servlet.service() for servlet cometd 抛出异常:java。 lang.ClassNotFoundException:来自 BaseClassLoader@12a54b 的 org.eclipse.jetty.server.AbstractHttpConnection

我使用的完整 web.xml 文件在这里

尽管报告了所有错误,但示例没有运行我的 Jboss,但是通过观看萤火虫,我可以看到它执行快速池而不是长池。似乎服务器认为浏览器打开了多个连接,但事实并非如此(请参阅下面的 JSON):

有没有人设法使示例与 JBoss as6 一起工作?如何?我在这里做错了什么?

0 投票
1 回答
1127 浏览

comet - dojo cometd 从未准备好

我正在尝试使用 Jetty、Dojo 和 maven 设置 Bayeux 服务器和客户端。

我的问题是道场似乎永远都没有准备好。require 中的回调永远不会被调用。

这是 HTML 页面的代码:

它不像dojo不能在服务器上工作。确实如此。我的应用程序是用 dojo 1.7.2 编写的

是否存在我不知道的已知问题或我做错了什么?

感谢您提供有关如何找出从未调用回调的原因的任何提示。