gpt4 book ai didi

websocket - WebSocket 真的应该由 Web 服务器处理吗?

转载 作者:行者123 更新时间:2023-12-02 19:27:50 28 4
gpt4 key购买 nike

WebSocket 标准尚未获得批准,但从草案来看,该技术似乎旨在在 Web 服务器中实现。 pywebsocket实现一个 WebSocket 服务器,可以专用或作为 Apache 插件加载。

所以我想知道的是:WebSockets 的理想用途是什么?使用专用 WebSocket 服务器来实现服务是否有意义,或者重新考虑将其运行在支持 WebSocket 的 Web 服务器之上是否更好?

最佳答案

WebSocket 协议(protocol)在设计时考虑了三种模型:

  • 完全独立于任何 Web 服务器运行的 WebSocket 服务器。
  • 与网络服务器分开运行的 WebSocket 服务器,但流量从网络服务器代理到 websocket 服务器(允许 websocket 和 HTTP 流量在同一端口上共存)
  • 作为 Web 服务器中的插件运行的 WebSocket 服务器。

您选择的模型实际上取决于您尝试构建的应用程序以及可能限制您选择的其他一些约束。

例如,如果您的应用程序将从单个 Web 服务器提供服务,并且 WebSocket 连接将始终返回同一服务器,那么将 WebSocket 服务器作为插件/模块运行可能是有意义的网络服务器。

另一方面,如果您有一个可从许多不同网站使用的通用 WebSocket 服务(例如,您可以从 WebSocket 服务器提供连续的低延迟流量更新),那么您可能希望运行 WebSocket服务器与任何网络服务器分开。

基本上,WebSocket 服务和 Web 服务之间的集成越紧密,您就越有可能希望在同一端口上一起运行它们。

有一些约束可能会强制采用一种或另一种模型:

  • 如果您控制服务器但不控制传入的防火墙规则,那么您可能别无选择,只能在与 HTTP/HTTPS 服务器相同的端口(例如 80 和 443)上运行 WebSocket 服务器。在这种情况下,您将必须使用 Web 服务器插件或代理来连接真正的 WebSocket 服务器。
  • 另一方面,如果您在运行 WebSocket 服务器的服务器上没有 super 用户权限,那么您可能无法使用端口 80 和 443(1024 以下通常是特权端口范围) ),在这种情况下,是否在同一端口上运行 HTTP/S 和 WebSocket 服务器并不重要。
  • 如果您在 Web 服务器中具有基于 Cookie 的身份验证(例如 OAuth),并且您希望将其重新用于 WebSocket 连接,那么您可能希望将它们一起运行(紧密集成的特殊情况)。<

关于websocket - WebSocket 真的应该由 Web 服务器处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8215088/

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