gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:30:41 27 4
gpt4 key购买 nike

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

最佳答案

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

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

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

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

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

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

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

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

看看这个生活 web architecture white paper了解更多详情

关于webserver - websockets如何保持持久连接以及在现场使用的稳定性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11928693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com