我正在构建一个具有实时源的Web应用程序(类似于Facebook的新闻源),我希望通过长轮询机制进行更新.我理解使用Python,我的选择几乎要么使用Stackless(从他们的Comet wsgi示例构建)或Cometd + Twisted.遗憾的是,关于这些选项的文档很少,我无法在线找到关于Python上彗星生产规模用户的好信息.
有没有人在生产系统中成功实现Python上的彗星?你是怎么做的,我在哪里可以找到实现自己的资源?
我目前正在使用Spring MVC编写论坛Web应用程序.我只是春天的初学者,现在只用了大约一个星期.
我需要实现推送通知.以下是方案:用户A登录并创建帖子.当用户A仍然登录时,用户B对用户A的帖子发表评论.用户A收到一些用户已对其帖子发表评论的通知,而他的浏览器没有刷新页面.
我需要帮助向用户A发送通知,即用户B异步评论他的帖子.我做了一些研究,发现有一个名为CometD的软件包我可以使用,但我找不到任何简单的教程供我理解.
任何人都可以建议任何其他包/方式来解决我的问题?或者如果你有任何简单的CometD教程,那也会很棒.
我只是一个Cometd的初学者,我很感兴趣并且想要了解cometd是什么以及使用了什么我用Google搜索并找到了一些资源.在以下链接中1. http://docs.cometd. org/reference/installation.html#d0e346.
我尝试了给定的演示,但我无法从中获得预期的输出.任何人都可以发布一些资源网址,以便我可以学习?
我想只在密码保护Jetty WebApp的上下文路径上的根目录.我的上下文路径是/ MyApp,所以我想要一个密码来访问:
http://localhost:8080/MyApp
Run Code Online (Sandbox Code Playgroud)
但不是:
http://localhost:8080/MyApp/cometd
Run Code Online (Sandbox Code Playgroud)
我目前的设置如下(注意网址格式):
<security-constraint>
<web-resource-collection>
<web-resource-name>Private Page</web-resource-name>
<url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>moderator</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Test Realm</realm-name>
</login-config>
Run Code Online (Sandbox Code Playgroud)
我希望这只能通过/和/*工作的性质来发挥作用.我也看到过这个资源,我认为这表明这应该起作用了:http://www.coderanch.com/t/364782/Servlets/java/there-key-difference-between-url
但是,对于我的情况,网址模式:
<url-pattern>/</url-pattern>
Run Code Online (Sandbox Code Playgroud)
和
<url-pattern>/*</url-pattern>
Run Code Online (Sandbox Code Playgroud)
似乎表现得完全一样:两者兼而有之
http://localhost:8080/MyApp
Run Code Online (Sandbox Code Playgroud)
和
http://localhost:8080/MyApp/cometd
Run Code Online (Sandbox Code Playgroud)
两个密码保护.
当然,如果我改为/ nothingishere,就像一个完整性测试一样,没有任何密码保护,除了/ MyApp/nothingishere
有谁知道如何只保护Web servlets的根目录?
我需要在我的应用程序中实现长轮询以检索事件.但我不知道该怎么做.我知道长轮询的概念,即保持连接打开,直到事件发生.但是我该如何在我的项目中实现这一点.如果你能给我一个简单的长轮询客户端示例和我想的观点,我真的很感激.谢谢!
官方文档没有提到支持,但我想知道是否可以连接客户端程序而不是javascript来使用Channel API.我目前正在使用Windows应用程序的基本轮询技术,使用Channel API可以提高响应速度并减少负载.
我认为,作为一个丑陋的黑客,我可以在后台渲染一个隐藏的webbrowser对象,并在其中运行javascript,然后以此为基础.有更好的解决方案吗?
我有一个Java项目,它通过使用自签名证书的安全WebSocket传输连接到CometD服务器.我正在WebSocketClientFactory按以下方式配置:
wssFactory.getSslContextFactory().setKeyStorePath("/path/to/my/custom.jks");
wssFactory.getSslContextFactory().setKeyStorePassword("mypass");
Run Code Online (Sandbox Code Playgroud)
然后创建我的BayeuxClient喜欢:
BayeuxClient client = new BayeuxClient(
"wss://myserver.com/cometd",
WebSocketTransport.create(clientOptions, wssFactory));
Run Code Online (Sandbox Code Playgroud)
实际上,当第一次加载时,似乎配置正确:
[DEBUG] 2012-08-07 12:58:05,786 : starting org.eclipse.jetty.websocket.WebSocketClientFactory@75cfa3d2
[DEBUG] 2012-08-07 12:58:05,786 : starting qtp2005556553{8<=0<=0/254,-1}
[DEBUG] 2012-08-07 12:58:05,788 : STARTED qtp2005556553{8<=7<=8/254,0}
[DEBUG] 2012-08-07 12:58:05,788 : starting org.eclipse.jetty.websocket.WebSocketClientFactory$WebSocketClientSelector@50c8c3b8
[DEBUG] 2012-08-07 12:58:05,795 : STARTED org.eclipse.jetty.websocket.WebSocketClientFactory$WebSocketClientSelector@50c8c3b8
[DEBUG] 2012-08-07 12:58:05,795 : Starting Thread[qtp2005556553-33 Selector0,5,main] on org.eclipse.jetty.io.nio.SelectorManager$1@346fe350
[DEBUG] 2012-08-07 12:58:05,797 : starting SslContextFactory@4240eca3(/Users/apetresc/Downloads/infrastructure.jks,null)
[INFO ] 2012-08-07 12:58:05,981 : Enabled Protocols [SSLv2Hello, SSLv3, TLSv1] of [SSLv2Hello, SSLv3, TLSv1]
[DEBUG] 2012-08-07 12:58:05,981 : …Run Code Online (Sandbox Code Playgroud) 我不知道从哪里开始或哪些信息相关,请告诉我哪些其他信息可能有助于解决此问题.
我正在开发一个简单的cometd应用程序,我正在使用mongodb作为我的存储后端.我在应用程序启动时获取了一个mongodb实例,并将此实例用于所有查询.事实上,这是由mongo java驱动程序文档推荐的,如下所述:http://www.mongodb.org/display/DOCS/Java+Driver+Concurrency.我正在抓住吸管认为这个问题与线程安全有关,但根据该链接,mongodb完全是线程安全的.
这是有趣的地方.我有一个课程延伸BasicDBObject.
public class MyBasicDBObject {
private static final String MAP = "map";
public boolean updateMapAnd(String submap, String key, byte[] value) {
Map topMap = (Map)this.get(MAP);
Map embeddedMap = topMap.get(submap);
byte[] oldValue = embeddedMap.get(key);
newValue = UtilityClass.binaryAnd(oldValue, value);
embeddedMap.put(key, newValue);
topMap.put(submap, embeddedMap);
this.put(MAP, topMap);
}
public boolean updateMapXor(String submap, String key, byte[] value) {
Map topMap = (Map)this.get(MAP);
Map embeddedMap = topMap.get(submap);
byte[] oldValue = embeddedMap.get(key);
newValue = UtilityClass.binaryXor(oldValue, value);
embeddedMap.put(key, newValue); …Run Code Online (Sandbox Code Playgroud) 我们有一个使用Jetty 8.1,dojo和cometd的Web应用程序,它使用(1)JSON/HTTP REST API进行同步操作和(2)cometd API从服务器接收大量事件,在浏览器和Web容器之间进行交互.
我们还不完全清楚的是如何优雅地管理这两种不同API的认证会话,特别是因为我们将尽可能使用websocket而不是常规HTTP.该应用程序使用标准Jetty LDAP模块使用基于表单的身份验证.因此,从HTTP角度来看,容器为浏览器提供了标准的jsessionid,如下所示:
Cookie: jsessionid=758E2FAD7C199D722DA8B5E243E0E27D
Run Code Online (Sandbox Code Playgroud)
基于西蒙娜博尔德的帖子在这里似乎推荐的解决方案是的cometd握手这就是我们正在做的过程中通过此令牌.
我们遇到的问题是有两个根本不同的会话 - HTTP会话和Bayeux cometd会话.由于潜在的内存泄漏和安全问题等原因,我们希望它们一致终止或"配对".如果用户的HTTP会话终止,我们希望相应的Bayeux会话也终止,反之亦然.有推荐的方法吗?
这与以下内容有关:
用于El Capitan的
Safari 9.1 用于Sierra的Safari 10
当浏览器或标签失去焦点(主要是最小化)时,是否有人知道Safari在JavaScript引擎中针对setTimeout()做什么?
我创建了一个简单的JavaScript Web应用程序,该应用程序在Safari中加载,该应用程序调用JavaScript setTimeout(),该方法将在超时值之后传递另一个要执行的函数。该函数将日期/时间打印到控制台,然后以相同的超时值调用setTimeout()。
如果Safari选项卡失去焦点或浏览器最小化,则一段时间后Safari似乎停止执行setTimeout和随后的要调用的函数,直到返回焦点为止,才执行任何函数。就像事件循环停止处理一样。
注意:不会丢失任何函数调用,它们只会暂停,并在浏览器重新获得焦点时重新启动。
我在Firefox,Chrome或IE11中没有注意到这一点。
引起此问题的主要原因是该问题主要是在我维护的Web应用程序中观察到的,该应用程序使用CometD进行与服务器的通信。CometD库使用setTimeout每30秒执行一次向服务器的请求。如果运行该应用程序的浏览器最小化,则CometD似乎停止与服务器通信,直到再次最大化浏览器为止。
cometd ×10
java ×3
jetty ×3
comet ×2
c# ×1
channel-api ×1
django ×1
javascript ×1
long-polling ×1
mongodb ×1
passwords ×1
python ×1
safari ×1
security ×1
servlets ×1
settimeout ×1
spring ×1
spring-mvc ×1
ssl ×1