Websockets如何维持持久连接,且在实时应用中使用的稳定性如何?

5
我需要一个基于事件的服务器,可以实时推送数据给客户端。在论坛上我看到websocket是最佳选择,请解释一下它的工作原理并说明其在生产环境中的稳定性如何?
1个回答

4
由于Websockets技术比较新,我认为许多应用服务器尚未对Websockets提供很好的支持。例如,Tomcat表示:“Tomcat根据RFC 6455提供WebSocket支持。此功能尚未完成,建议您以漏洞报告形式提供反馈。”但是,如果您稍微改变架构方案,就可以利用Websockets的优势。一个发送基于事件的股票行情变化的示例应用程序可以按以下逻辑步骤工作。
1)客户端应用程序(Web应用程序或其他WebSocket启用的应用程序)将与请求资源服务服务器建立WebSocket连接。 2)然后由服务器负责接收外部(后端事件)并选择哪些客户端接收相应的消息。 3)然后将该消息通过websocket连接发送到客户端。标准定义的Websocket应允许该连接保持打开状态,只要客户端在线并且应该在接近实时的情况下传递数据。此外,它将提供在可以可靠地通过Web传递的标准端口/协议上运行的优势。
从这个过程中,您可以看到基础架构实际上有4个逻辑部分。1)定制接收事件的后端。对于股票行情,这将是机构的后端。2)负责将事件逻辑链接到相应客户端的消息代理。3)Websocket连接到客户端。4)客户端本身。
后端可以根据需要编写任何内容以连接到您的事件。对于股票行情系统,这将是一些定制应用程序,与金融服务提供商相关联。
对于消息代理,建议使用JMS或AMQP来处理“基于事件的服务”。这些消息代理在许多企业应用程序中已得到定义和使用。从硬件角度来看,它们可以直接运行在您的后端上,也可以分开运行。此外,它们为您提供了各种服务(点对点、发布订阅等),您可能希望在应用程序中利用。或者,如果您想创建自己的自定义消息服务,可以使用类似Netty的东西。
对于WebSocket连接,您需要一个可以轻松可靠地连接到消息代理系统的服务。例如,Kaazing(免责声明和完全披露,我为Kaazing工作)提供了企业AMQP版和JMS版,可以直接连接到您的消息代理。
包括浏览器是否支持WebSocket以及后备机制(长轮询、ajax)等客户端问题。这些实际上取决于您用于创建WebSocket连接的服务。虽然有许多开源服务提供回退机制,但Kaazing还提供了模拟的WebSocket连接,其逻辑更像是WebSockets而不是WebSockets创建以替换的后备机制(长轮询/ajax)。

在稳定性方面:JMS和AMQP被广泛使用并且稳定。已经有许多行业用户在使用它们的技术。

查看这篇实时的Web架构白皮书获取更多详细信息。


如果对JMS over WebSocket感兴趣,这里有一个简单的教程:http://tutorial.kaazing.com。 - Peter Moskovits

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接