websockets如何保持持久连接以及在现场使用的稳定性如何?

5 webserver event-based-programming websocket

我需要一个基于事件的服务器,可以轻松地将数据推送到客户端。正如我在论坛中读到的,基于 websocket 的服务器是我最好的选择。请解释一下它的工作原理以及它在生产盒上的使用稳定性如何?

Dav*_*oon 4

因为 Web 套接字太新了,所以我不相信许多应用程序服务器对 Web 套接字有很好的支持。例如,Tomcat 声明如下“Tomcat 提供对 RFC 6455 定义的 WebSocket 的支持。此功能尚未最终确定,鼓励您以错误报告的形式提供反馈”。但是,如果您以稍微不同的方式查看架构,则可以利用 Web 套接字的优势。发送基于事件的股票报价变化的 示例应用程序可以按以下逻辑步骤工作。

1) 客户端应用程序(Web 应用程序或其他启用 Web 套接字的应用程序)将与请求的资源服务服务器建立 Web 套接字连接。
2) 服务器然后负责接收外部(后端事件)并选择哪些客户端接收相应的消息。
3) 然后该消息将通过 websocket 连接发送到客户端。标准定义的 Websockets 应允许只要客户端在线,连接就保持打开状态,并且应近乎实时地传送该数据。此外,它将提供在标准化端口/协议上运行的优势,可以通过网络可靠地交付。

由此您可以看到基础设施实际上有 4 个逻辑部分。1) 定制接收事件的后端。对于股票报价,这将是机构后端。2) 消息代理负责将事件逻辑链接到相应的客户端。3)与客户端的websocket连接。4) 客户本身

后端:确实可以用连接到您的事件所需的任何内容来编写。对于股票报价系统,这将是一些链接到金融服务提供商的自定义应用程序

对于消息代理我建议您使用 JMS 或 AMQP 来处理“基于事件的服务”。这些消息代理经过明确定义并在许多企业应用程序中使用。从硬件的角度来看,它们可以直接在您的后端运行或单独运行。此外,它们还为您提供了您可能希望在应用程序中使用的各种服务(点对点、发布订阅等)。或者,如果您想创建自己的自定义消息传递服务,您可以使用 Netty 之类的东西。

对于 websocket 连接您将需要一个可以轻松可靠地连接到消息代理系统的服务。例如,Kaazing(免责声明和完整披露,我在 Kaazing 工作)提供企业 AMQP 版本和 JMS 版本,可以直接连接到您的消息代理。

与客户的问题:包括浏览器是否支持 Web 套接字以及回退机制是什么(长轮询、ajax)。这些实际上取决于您使用什么服务来创建 websocket 连接。虽然有很多开源服务提供后备机制,但 Kaazing 还提供了模拟的 Websocket 连接,其工作原理在逻辑上更像是 Websocket,而不是 Websocket 旨在取代的后备机制(长轮询/ajax)。

稳定性方面:JMS和AMQP应用广泛且稳定。有许多行业用户已经在使用他们的技术,令人印象深刻。

查看这份动态网络架构白皮书了解更多详细信息