29

我有一个非常简单的问题,但我在 Google 上没有发现任何有趣的问题。

是否有 SignalR (.NET) 的 Java 等价物?

SignalR 是一个 .NET 框架,它实现了 Websockets,并为旧浏览器提供了回退。

真的很感谢你。

4

2 回答 2

29

看来Atmosphere可以是您正在寻找的。

来自github描述:

Atmosphere Framework 包含用于构建异步 Web 应用程序的客户端和服务器端组件。

我还没有尝试过,但这表明它支持主要的 JEE 服务器(JBoss、Tomcat、Glassfish、Jetty)和所有主要的浏览器和传输(WebSockets、SSE、Long-Polling 等)。

2014 年 6 月 4 日更新: “Java 等效于 SignalR”还有另一个值得注意的替代方案。从 4.0 版开始,Spring Framework 提供了对 WebSockets的支持和对 SockJS 的服务器端支持。这意味着它还支持 WebSocket-Fallback,与浏览器端sockjs-client库一起使用。正如 Spring 文档所说:

并非所有浏览器都支持 WebSocket,并且可能会被限制性网络代理排除。这就是为什么 Spring 提供了基于 SockJS 协议尽可能接近地模拟 WebSocket API 的后备选项 [...] 在浏览器端,应用程序可以使用模拟 W3C WebSocket API 并与服务器通信的 sockjs-client根据运行的浏览器选择最佳传输选项。

到目前为止,我仍然不知道 Java 框架中是否支持诸如 SignalR Hubs(涉及 JavaScript 代码生成)之类的东西,但另一方面,我认为您可以轻松地模仿具有完全后备功能的类似 SignalR 的 PersistentConnection对旧浏览器的支持。

此外,由于JSR 356又名用于 WebSocket 的 Java API,我认为所谓的“主流”Java Web 框架将提供对 Websockets+Fallback 的开箱即用支持只是时间问题,特别是考虑到所有主要的 servlet 容器(如 Tomcat 和 Jetty)和 JEE 7 服务器(Glassfish、Wildfly)已经支持 JSR 356。

于 2013-12-24T00:03:48.613 回答
2

有一个 Play 框架模块 SignalJ

更新:SignalJ 看起来死了,看看Scala Web Sockets

于 2014-04-21T17:55:27.090 回答