服务器端WebSockets的最佳Java框架

时间:2010-10-23 08:23:48

标签: java websocket

我想创建低负载的简单服务器。目标是让一些javascript客户端访问通过WebSockets在Java中实现的一些功能。我寻求最好的库用于它 - 它应该是简单,强大等等。现在我考虑3个替代品 - jWebSocket - 码头 - netty 哪个最好?或者可能是别的什么?

提前致谢

11 个答案:

答案 0 :(得分:14)

我会使用经过验证的Java servlet服务器:Jetty或Resin。两者都已扩展为处理WebSockets:

Jetty WebSockets

Resin WebSockets

我个人的选择是Jetty,因为它使用非常简单,我在几个项目中一直将它用作嵌入式服务器。

块上还有一些新的孩子,如AtmospherejWebSocket,但对于服务器,我更喜欢采用经过验证的解决方案。 Jetty和Resin也是通用的Servlet服务器,因此您可以使用一种产品满足您的所有服务需求。

答案 1 :(得分:13)

jWebSocket现在包括Jetty 8.0引擎,包括SSL,并包含许多优秀的东西。它提供跨浏览器和跨平台兼容的客户端甚至更多移动应用程序,例如在Android,Symbian和BlackBerry下。服务器可以通过插件轻松扩展,并且已经包含很多服务器(例如,用于身份验证/自动化,JDBC,SMTP,XMPP / Jabber,RPC,Twitter,文件共享,聊天等)。检查出来...... http://jwebsocket.org。期待您的反馈。

此致 亚历

答案 2 :(得分:9)

PlayFramework!是另一个非常好的选择。

答案 3 :(得分:6)

仅供参考,气氛在Resin,GlassFish和Jetty之上运行。 Atmosphere通过在Websocket服务器之间提供Websocket可移植性,使您免于被困在一台服务器上。它还提供了一个客户端库,可以选择最佳的传输,以防浏览器不支持websocket。所以你无法将Atmosphere与Jetty或Rsin进行比较

答案 4 :(得分:5)

看看AtmosphereHere is an article关于websocket和氛围。

答案 5 :(得分:4)

虽然我非常重视JWebsockets和Autobahn的实现,但我更喜欢Atmosphere。

<强>斜坡上升 :: 加速时间很短。 Francois Arcand在测试和示例方面投入了大量精力,帮助每个人获得快速成功。 (而且我不知道为什么他能够如此迅速地回应我提出的任何架构问题。令人印象深刻。)

维护视角 :: 对我来说,如果软件超出主要版本1.0.0,可维护性是至关重要的。该项目保持在Maven-POM顶级,并具有适当构造的层次结构。它可以防止库不兼容。库是正确级别的参考。做得好。

技术/功能视角 :: 它提供了一个Java SE客户端库(wasync),可以执行本机websocket通信(onMessage)或构建Jersey REST注释(@Path)。随后,这使它变得简单,有利于维护订阅和流行的远程过程调用(RPC)范例的开放连接。合并这两种范式是一种常见的尝试。另见http://wamp.ws/,它采用相同的方法。此外,该库提供建立QoS属性,如健壮性(例如,在客户端断开连接的情况下)和可靠性(缓存未传递的消息)。这对于专业软件来说非常有用。

答案 6 :(得分:3)

也许你应该试试Bristleback Server?使用Bristleback,您可以从几个WebSockets引擎中进行选择,例如Jetty,Netty和Tomcat。您可以使用独立服务器以及使用WebSockets(Jetty和Tomcat 7)的Web应用程序。 Bristleback使用Spring Framework。如果您使用过Struts,Stripes或Play!等Web框架,那么您将很容易入手。当然,Bristleback拥有自己的JavaScript客户端库,可以更轻松地进行开发。

完全披露:我是Bristleback Server的共同创建者之一。

答案 7 :(得分:3)

我还要将vert.x添加到列表中。它可以服务器Websockets和SockJS(当浏览器不支持时,websocket模拟)。

更新:
Undertow http://undertow.io也支持websockets。

答案 8 :(得分:0)

关注我的博客。我会准备好在不久的将来释放。整个事情都强调了轻量级 - 但它也很快。我不知道它将如何提升到更高的负载。但是我已经运行了一段时间的演示,但负载相对较低,而且我的工作效果还不错。 (我稍后会测试较重的负载并确保它可以加速。)

http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html

答案 9 :(得分:0)

如果您正在寻找有关邮件管理,用户分组(“会议室”)和数据同步(“共享变量”)的基础架构,您可能需要考虑使用Union Platform:

http://www.unionplatform.com

[完全披露:我是联盟的共同创造者之一]

答案 10 :(得分:0)

为什么不在JMS这样的开放标准上编写应用程序,让客户端作为消息客户端坐在JMS总线上? websockets的重点是将任何本机TCP协议直接带到客户端,而不是将其从后端转换为http请求/响应。

您的后端服务将与ActiveMQ等JMS代理通信,并且您的客户端通过Javascript API在浏览器中说AMQP,该API看起来就像Java中的JMS API。您需要的只是一个websocket网关,例如Kaazing有这样一个网关,它所做的就是通过websockets将您的JMS TCP流量路由到Web客户端。它们还提供扇出,以便您不会使JMS总线过载,即您只需使用少量连接到代理即可卸载一百万个浏览器客户端连接。

最重要的是,您不需要将自己绑定到任何特定平台。坚持使用标准,这样您可以100%自由地在环境变化时更换组件。