我有一个非常简单的问题,但我在谷歌上没有发现任何有趣的东西。
是否有等效于SignalR(.NET)的Java?
SignalR是一个.NET框架,它为旧浏览器实现了一个后备Websocket。
真的很感谢你。
大气似乎就是你想要的。
来自github描述:
Atmosphere Framework包含客户端和服务器端组件用于构建异步Web应用程序。
我还没有尝试过,但这表明它支持主要的JEE服务器(JBoss、Tomcat、Glassfish、Jetty)以及所有主要的浏览器和传输(WebSockets、SSE、Long Polling等)。
2014年4月6日更新:"SignalR的Java等价物"还有另一个值得注意的替代方案。从4.0版本开始,Spring Framework支持WebSockets,并在服务器端支持SockJS。这意味着它还支持WebSocket Fallback,与浏览器端的sockjs客户端库一起使用。正如Spring文档所说:
并非所有浏览器都支持WebSocket,并且可能会被限制性的网络代理排除在外。这就是为什么Spring提供了基于SockJS协议尽可能接近模仿WebSocket API的回退选项[…]在浏览器端,应用程序可以使用模仿W3C WebSocket API并与服务器通信的SockJS-client,根据其运行的浏览器选择最佳传输选项。
尽管如此,我不知道到目前为止,Java框架中是否支持SignalR Hubs(涉及JavaScript代码生成)之类的东西,但另一方面,我认为你可以很容易地模仿像PersistentConnection这样的SignalR,并完全支持旧浏览器。
此外,由于WebSocket的JSR 356,也就是Java API,我认为所谓的"主流"Java Web框架何时会提供对Websockets+Fallback的开箱即用支持只是时间问题,特别是考虑到所有主要的servlet竞争器(如Tomcat和Jetty)和JEE 7服务器(Glassfish、Wildfly)都已经支持JSR 356这一事实。
有一个Play框架模块SignalJ
更新:SignalJ看起来死了,看看Scala Web套接字