为什么WebSockets使用(“ws”和“wss”)而不是(“http”和“https”)?

时间:2017-08-31 07:11:48

标签: websocket

注册特殊URI方案的原因是什么:“ws”和“wss”? 我简要地阅读了规范,并没有找到任何关于这种变化的理由。

https://tools.ietf.org/html/rfc6455#section-11.1

WebSocket客户端发送特殊标头(Connection: UpgradeUpgrade: websocket),可以相对轻松地确定这是否是正常的HTTP请求(GETPOST ...等)或这是WebSocket连接请求。

为什么WebSockets无法使用“http”和“https”方案?

2 个答案:

答案 0 :(得分:1)

我不在董事会或任何事情上,但这里有任何2¢......:

协议的握手当前使用HTTP(S)进行连接建立,但这就是HTTP的参与。

未来版本很可能使用ALPN等技术扩展握手可能性。

通过使用URI方案ws://...wss://...,握手与URI分离,允许将来更改以更少的干扰发生。

答案 1 :(得分:0)

他们出于架构清晰的目的使用它,似乎没有技术限制,为什么您不能仅使用http处理websocket连接。

请注意,用于处理诸如Paho之类的websocket连接的javascript客户端库,仅通过http协议来处理websocket,甚至如果您显式地提供以ws协议为前缀的主机,甚至会失败-这很简单展示代码示例:

// Create a client instance
client = new Paho.MQTT.Client(
    location.hostname, Number(location.port), "clientId"
);