java - 在 Jetty 上使用 Comet 长轮询进行持续推送?

标签 java servlets jetty comet long-polling

我正在尝试创建一个允许客户端(网络浏览器、Java 客户端...)从网络服务器获取广播通知的 Jetty servlet。

通知应以 JSON 格式发送。

我的第一个想法是让客户端发送一个长轮询请求,服务器在通知可用时使用 Jetty 的 Continuation API 进行响应,然后重复。

这种方法的问题是我错过了 2 个请求之间发生的所有通知。

我为此找到的唯一解决方案是在服务器上缓冲事件并使用时间戳机制重新传输错过的通知,这种方法有效,但对于它所做的事情来说似乎很重...

关于如何更优雅地解决这个问题有什么想法吗?

谢谢!

最佳答案

HTTP Streaming绝对是比 HTTP 长轮询更好的解决方案。 WebSockets 是一个更好的解决方案。

WebSockets 为任何客户端(不必是网络浏览器)和服务器之间的网络实时通信提供了第一个标准化的双向全双工解决方案。恕我直言,WebSockets 是必经之路,因为它们是一种将继续开发、支持和需求的技术,并且只会在使用和普及方面增长。他们也 super 酷 :)

似乎有 a few WebSocket clients for JavaJetty also supports WebSockets .

关于java - 在 Jetty 上使用 Comet 长轮询进行持续推送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405306/

相关文章:

java - 如何使用默认电子邮件客户端从 Java 发送带有附件的电子邮件?

mysql - 尝试从表中检索信息并编译到前 10 名列表中

java - 从 ServletContext 获取真实路径时出现 NullPointerException

java - Jetty vs CXF/选择哪一个?

java - jetty ,网络套接字,java.lang.RuntimeException : Cannot load platform configurator

javax.ws.rs : What is Actually Returned by a Method

java - 如何获取 ResultSet 包含的行数?

java - 如何在Android中每分钟获取gps坐标?

java - 如何在 SWT Canvas 中显示快速变化的图像? (没有快速调用 paintControl() 监听器方法)

java - Tomcat 6.0之后如何替换ServletException?