问题标签 [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.
c# - 在 CometD 中设置 Cookie 域
setCookie(string, string)
CometD .NET 在调用方法时抛出异常,BayeuxClient
因为我没有为这些 cookie 设置域,但我没有看到设置域的属性或方法,并且没有任何重载setCookie(...)
将域作为范围。
代码:
java - CometD / jQuery 客户端错误 402::未知客户端
我正在尝试开始使用 CometD,因为我需要一些经验背景来对各种推送技术进行技术比较。
我终于设法在我的 Tomcat (v7.0) 中运行了一个示例代码。
现在我有奇怪的行为,我拼命想找出我做错了什么。
以下是我的观察:
连接循环:
我在与客户端的无限连接循环中运行。
要求:
回复:
有趣的是,Listener-callback 事件实际上发生了
/li>客户端连接请求卡住
这主要发生在我的 Tomcat 服务器重新启动之后。我可以看到成功订阅了 2 个频道:
要求
回复
要求
回复
这个之后的电话卡住并且永远需要。
... abd 这是我的代码
客户
/li>服务器
请注意,这与分发包中的示例几乎是 1:1 的!
}
Web.xml 文件
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
也许我只是在做一些完全错误的事情,但我开始对此感到有些绝望。帮助将不胜感激。
dojo - cometd hello world 示例与 dojo
我正在尝试在这里遵循基本的彗星示例:http: //dojotoolkit.org/reference-guide/1.7/dojox/cometd.html
它使用的是旧的模块加载器,所以我尝试了如下等价的:
这不起作用,我认为它与加载模块有关 - 存在某种静默错误,因为就绪函数中的代码根本不执行。我发现当“dojox/cometd”require 语句存在时,ready 函数中的代码不会执行。
运行示例:http: //jsfiddle.net/Q9W8f/2/
删除 dojox/comted 的示例:http: //jsfiddle.net/mMs2h/4/
我没有太多地使用新的模块加载器,所以我敢打赌我只是有一些简单的误解。
帮助!
jetty - 将 cometd 会话与 HTTP 会话配对
我们有一个使用 Jetty 8.1、dojo 和 cometd 的 Web 应用程序,它使用 (1) 用于同步操作的 JSON/HTTP REST API 和 (2) 用于从服务器接收大量事件的 Cometd API 在浏览器和 Web 容器之间进行交互。
我们不完全清楚的是如何优雅地管理这两个不同 API 的身份验证会话,特别是因为我们的 Cometd 将尽可能使用 websocket 而不是常规 HTTP。该应用程序使用标准 Jetty LDAP 模块使用基于表单的身份验证。因此,从 HTTP 的角度来看,容器为浏览器提供了一个标准的 jsessionid,如下所示:
根据 Simone Bordet 在此处的帖子,似乎推荐的解决方案是在我们正在做的 Cometd 握手期间传递此令牌。
我们遇到的问题是有两个根本不同的会话——HTTP 会话和 Bayeux cometd 会话。由于潜在的内存泄漏和安全问题等原因,我们希望它们一致地终止或“配对”。如果用户的 HTTP 会话终止,我们希望相应的 Bayeux 会话也终止,反之亦然。有推荐的方法吗?
cometd - CometD 的 REST API
我目前正在使用 CometD 服务器和 jQuery 客户端实现。我想知道的是,是否有任何有效的方法可以在我的服务器中使用 REST API 供客户端检索信息(即字符串)。我只需要检索一次字符串,之后我不再需要使用该服务。
目前我的做法是使用服务通道并在服务器中为其添加监听器。然后我让我的客户向这个频道发送一条随机消息。收到消息后,服务器将检索字符串并使用相同的通道将其广播回客户端。
但是,我发现这是一种非常迂回的方式,此外,客户端在收到字符串后无需再收听频道。有没有更好的方法呢?
更新:我还将服务器用于其他实时频道,这就是为什么我选择 CometD 的发布广播功能。
javascript - 使用 CometD 不断观察文件的变化
我正在创建一个应用程序,并被告知最好将 Comet 用于我想要的。到目前为止,我还没有使用 Comet 的经验,但经过一些研究,我已经建立了一个 CometD 服务器。其他可用的服务器包括 APE,但距离上一次修订似乎已经有一段时间了,而且 CometD 的文档要好得多。
由于我缺乏经验,我真的不知道从哪里开始,并且文档没有涵盖如此具体的案例。
我希望服务器持续监视 .txt 文件的更改,并在 HTML 页面中显示该文档的当前内容。该文件会定期更改(大约每 2 或 3 分钟一次),我希望在更改发生时将新文档显示给连接的客户端。
我认为它是可行的,我想它可以通过修改 JS 来完成。我唯一的问题是……我该如何开始?
java - 将自定义密钥库与 Jetty 的 WebSocketClientFactory 一起使用
我有一个 Java 项目,它通过使用自签名证书的安全 WebSocket 传输连接到 CometD 服务器。我正在WebSocketClientFactory
通过以下方式配置:
然后像这样创建我BayeuxClient
的:
事实上,当第一次加载时,事情似乎配置正确:
而且,确实,实际使用了BayeuxClient
作品。但是,即使我根本没有指定密钥库,它也可以工作——它只是将其视为未签名的证书。而且,确实,这似乎是正在发生的事情,从我每隔几秒钟就会收到的错误日志来看:
对我来说,这意味着CometD握手正在完成,但SSL握手尚未完成。不过,我不知道为什么会这样。一种类似的方法适用于我的 HTTPS 调用。只有WSS让我头疼。
值得一提的是,我可以在各种不同的环境中重现这一点,包括 Android 应用程序和 Jetty servlet 容器。
有没有人成功使用带有自签名证书的 WSS?想弄清楚我做错了什么?
java - 为什么 mongodb 似乎保存了一些二进制对象而不保存其他对象?
我不确定从哪里开始或哪些信息是相关的,请让我知道哪些附加信息可能对解决此问题有用。
我正在开发一个简单的 cometd 应用程序,并且使用 mongodb 作为我的存储后端。当应用程序启动时,我获得了一个 mongodb 实例,并将该实例用于所有查询。这实际上是由 mongo java 驱动程序文档推荐的,如下所述:http ://www.mongodb.org/display/DOCS/Java+Driver+Concurrency 。我抓住了稻草,认为这个问题与线程安全有关,但根据该链接,mongodb 是完全线程安全的。
这就是有趣的地方。我有一个扩展类BasicDBObject
。
接下来是两个扩展的骨架类MyBasicDBObject
。
我以这种方式设置类的唯一原因是提高代码在处理同一范围内的这两个对象时的可读性。这让我可以执行以下操作...
通过遍历传递的字节数组,按位和按位UtilityClass
命名方法完全一样。&
^
这是我完全迷路的地方。 updateMapObjectsFoo()
完全按预期工作,既first
反映second
了数据库中的变化。 updateMapObjectsBar()
另一方面,只能设法正确更新first
。
通过调试检查updateMapObjectsBar()
表明二进制对象实际上在两个对象上都正确更新了,但是当我前往 mongo shell 调查问题时,我发现first
数据库中已更新但second
没有更新。我从哪里得到线程安全与它有关的想法?让我烦恼的唯一区别是secondCollection
其他cometd服务使用了它,而firstCollection
没有使用。一方面这似乎相关,但另一方面则不相关,因为Foo
有效且Bar
无效。
我已经将代码拆开并将其重新组合在一起,并且我不断地回到同样的问题。这里到底发生了什么?
似乎我遗漏了最相关的部分,即 java 泛型的噩梦和 mongodb 驱动程序对语言这一特性的依赖。 BasicDBObject
本质上是 a 的包装器Map<String, Object>
。问题是,一旦您在该地图中存储了一个对象,您必须将其转换回您将其放入其中时的状态。是的,这可能看起来很明显,在发布这个问题之前我就很清楚了。
我无法确定到底发生了什么,但我会向 java + mongodb 用户提供这个建议。您将进行大量转换,并且您的数据结构越复杂,您需要的转换就越多。长话短说,不要这样做:
当你在做快速原型时,一个班轮很诱人,但当你开始一遍又一遍地做这件事时,你肯定会犯错误。现在写更多代码,以后少受挫折:
我认为这很烦人,但我应该期望直接与 Mongo 交互,而不是使用某种库来让我的生活更轻松。我在这件事上自欺欺人,但希望有人能从我的错误中吸取教训,为自己省去很多挫折。
感谢大家的帮助。
java - 服务器使用 COMETD 推送到客户端(dojo)
我正在尝试将消息从服务器推送到客户端。我正在使用与 tomcat6 集成的 DOJO 1.7、Cometd 和 Jetty。
我想向订阅特定频道的所有客户广播消息。当 m 使用 remore.deliver 时,它正在向单个客户端发送消息,而不是向订阅该频道的所有客户端发送消息。channel.publish 对我不起作用……非常感谢任何帮助和评论。