为什么websocket协议的设计者不使用WS作为方法而不是GET?

时间:2013-08-06 12:20:00

标签: http websocket

我想知道为什么websocket协议的设计者决定使用GET方法而不是创建一个名为“WS”的新方法?

由于很多框架都能通过方法和url进行路由,所以这本来很酷。 是否有理由反对新方法?

2 个答案:

答案 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系统的兼容性。