我有一个非常简单的问题,但我发现谷歌没什么有趣的。
是否有Java等效的SignalR(.NET)?
SignalR是一个.NET框架,它实现了Websockets,并为旧浏览器提供了后备支持。
真的对你说。
答案 0 :(得分:22)
Atmosphere似乎正是您所寻找的。 p>
来自github说明:
Atmosphere Framework包含客户端和服务器端组件 用于构建异步Web应用程序。
我还没有尝试过,但this说它支持主要的JEE服务器(JBoss,Tomcat,Glassfish,Jetty)以及所有主要的浏览器和传输(WebSockets,SSE,Long-Polling等)
更新2014年6月4日: “Java等价的SignalR”还有另一个值得注意的替代方案。从版本4.0开始,Spring Framework附带support for WebSockets和SockJS的服务器端支持。这意味着它还支持WebSocket-Fallback,与浏览器端sockjs-client库一起使用。 正如Spring Documentation所说:
WebSocket尚未在所有浏览器中受支持,并且可能被限制性网络代理排除。这就是为什么Spring提供基于SockJS协议尽可能接近模拟WebSocket API的回退选项[...]在浏览器端,应用程序可以使用模拟W3C WebSocket API的sockjs-client并与服务器通信根据运行的浏览器选择最佳传输选项。
到目前为止,我仍然不知道Java Framework中是否支持SignalR Hubs(涉及JavaScript代码生成),但另一方面我觉得你可以很容易地模仿类似SignalR的PersistentConnection具有对旧版浏览器的完全后备支持。
此外,由于JSR 356也就是WebSocket的Java API,我认为只是时间的问题,所谓的“主流”Java Web框架将随附开箱即用支持Websockets + Fallback,特别是考虑到所有主要的servlet上传器(如Tomcat和Jetty)和JEE 7服务器(Glassfish,Wildfly)已经支持JSR 356。
答案 1 :(得分:2)
有一个Play框架模块SignalJ
更新:SignalJ看起来已经死了,看Scala Web Sockets