我需要一个基于事件的服务器,在那里数据可以很容易地被推送到客户端。正如我在论坛上看到的,基于websocket的服务器是我最好的选择。请解释一下它的工作原理,以及它在生产盒上的使用情况如何?
发布于 2012-08-15 20:46:44
因为web套接字是新的,所以我不认为许多应用服务器对web套接字有很好的支持。例如,Tomcat声明"Tomcat提供了对RFC 6455定义的WebSocket的支持,这个特性还没有完成,我们鼓励您以bug报告的形式提供反馈“。但是,如果您以稍微不同的方式查看您的体系结构,则可以利用web套接字的优点。发送基于事件的股票报价更改的样本应用可以在以下逻辑步骤中工作。
1)客户端应用程序(web应用程序或其他网络套接字启用应用程序)将与请求的资源服务服务器建立web套接字连接。
2)然后服务器将负责接收外部事件(后端事件),并选择哪些客户端接收相应的消息。
3)然后该消息将发送到客户端的websocket连接。标准定义的Websockets应该允许该连接保持开放,只要客户端处于在线状态,并且应该以近乎实时的方式传递该数据。此外,它还将提供在标准化端口/协议上运行的优势,这些端口/协议可以可靠地在web上传递。
从这一点可以看出,基础结构实际上有4个逻辑部分。1)定制以接收事件的后端。对于股票报价,这将是机构的后端。2)负责将事件逻辑地链接到相应客户端的消息代理。3)与客户端的websocket连接。( 4)客户本身
后端:实际上可以用连接到您的事件所需的任何东西编写。对于股票报价系统,这将是一些自定义应用程序,链接到金融服务提供商。
对于Message ,我建议您使用或AMQP来处理您的“基于事件的服务”。这些消息代理被很好地定义,并在许多企业应用程序中使用。从硬件的角度来看,它们可以直接运行在后端,也可以单独运行。此外,它们还为您提供了各种各样的服务(点对点、发布订阅等),您可能希望在应用程序中使用这些服务。或者,如果您想创建自己的自定义消息传递服务,您可以使用类似Netty的东西。
对于websocket连接,您将需要一个可以轻松可靠地连接到message系统的服务。例如,Kaazing (免责声明和完全披露我为Kaazing工作)提供了一个企业AMQP版本和JMS版本,可以直接连接到您的消息代理。
与客户端的问题:包括浏览器是否支持web套接字,以及返回机制是什么(长轮询,ajax)。这实际上取决于您使用什么服务来创建websocket连接。虽然有许多开源服务提供后备机制,但Kaazing还提供了模拟websocket连接,这种连接逻辑上更像websocket,而不是websocket所创建的备用机制(长轮询/ajax)。
在稳定性方面: JMS和AMQP被广泛使用和稳定。有一个令人印象深刻的行业用户名单,他们已经在使用他们的技术。
有关更多细节,请查看这个活动的web体系结构白皮书
https://stackoverflow.com/questions/11928693
复制相似问题