我想知道为什么websocket协议的设计者决定使用GET方法而不是创建一个名为“WS”的新方法?
由于很多框架都能通过方法和url进行路由,所以这本来很酷。 是否有理由反对新方法?
答案 0 :(得分:3)
来自RFC 6455,第1.3节:
打开握手旨在与基于HTTP的兼容 服务器端软件和中介,使单个端口可以 HTTP客户端与该服务器和WebSocket通信时使用的 客户与该服务器通话。
和1.8:
当要与HTTP共享的端口建立连接时 服务器(流量很可能发生的情况 端口80和443),连接将出现在HTTP服务器上 是具有升级优惠的常规GET请求。在比较简单 设置只有一个IP地址和一个服务器用于所有流量 对于单个主机名,这可能允许系统的实用方法 基于要部署的WebSocket协议。
这对Web服务器本身几乎不需要配置,因为支持它的编程语言可以很容易地扩展,以理解和执行通道升级到WebSockets。引入新的请求方法将需要HTTP服务器理解此方法。
如果您对原因感兴趣,请随时搜索/阅读http://www.ietf.org/mail-archive/web/hybi/邮件列表。我认为处理这个问题的讨论标题是“在WEBSOCKET上与现有方法相比(在GET上选择草案与OPTIONS对比新方法)”。
这是一个巨大的阅读,从here开始。在草案05中,GET
was chosen之后从未改变过:
作为主席,乔和我没有看到这项民意调查中出现任何重大共识;所以我们建议不要改变即将推出的05版本的方法, 保持GET作为握手的方法, 因为它在WebSocket握手中的行为已经在现场进行了大量测试 而且现在已经知道好坏了。
答案 1 :(得分:1)
可能保持与现有HTTP / 1.1系统的兼容性。
HTTP / 1.0仅支持3种方法:GET,POST和HEAD。 HTTP / 1.1添加了PUT,DELETE,TRACE,OPTIONS,CONNECT和PATCH。
添加WS方法会破坏与所有现有Web系统的兼容性。