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