我想创建低负载的简单服务器。目标是让一些javascript客户端访问通过WebSockets在Java中实现的一些功能。我寻求最好的库用于它 - 它应该是简单,强大等等。现在我考虑3个替代品 - jWebSocket - 码头 - netty 哪个最好?或者可能是别的什么?
提前致谢
答案 0 :(得分:14)
我会使用经过验证的Java servlet服务器:Jetty或Resin。两者都已扩展为处理WebSockets:
我个人的选择是Jetty,因为它使用非常简单,我在几个项目中一直将它用作嵌入式服务器。
块上还有一些新的孩子,如Atmosphere和jWebSocket,但对于服务器,我更喜欢采用经过验证的解决方案。 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)
看看Atmosphere。 Here 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:
[完全披露:我是联盟的共同创造者之一]
答案 10 :(得分:0)
为什么不在JMS这样的开放标准上编写应用程序,让客户端作为消息客户端坐在JMS总线上? websockets的重点是将任何本机TCP协议直接带到客户端,而不是将其从后端转换为http请求/响应。
您的后端服务将与ActiveMQ等JMS代理通信,并且您的客户端通过Javascript API在浏览器中说AMQP,该API看起来就像Java中的JMS API。您需要的只是一个websocket网关,例如Kaazing有这样一个网关,它所做的就是通过websockets将您的JMS TCP流量路由到Web客户端。它们还提供扇出,以便您不会使JMS总线过载,即您只需使用少量连接到代理即可卸载一百万个浏览器客户端连接。
最重要的是,您不需要将自己绑定到任何特定平台。坚持使用标准,这样您可以100%自由地在环境变化时更换组件。