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

问题描述 投票:0回答:2

注册特殊 URI 方案:

ws
wss
的原因是什么? 我简单地阅读了规格,没有找到任何有关此更改的原因。

https://www.rfc-editor.org/rfc/rfc6455#section-11.1

WebSocket 客户端发送特殊标头(

Connection: Upgrade
Upgrade: websocket
),让您可以相对轻松地确定这是普通 HTTP 请求(
GET
POST
...等)还是 WebSocket 连接请求。

为什么 WebSocket 不能使用

http
https
方案工作?

websocket url-scheme
2个回答
1
投票

我没有加入董事会或任何其他人,但这里有 2 美分...:

协议的握手当前使用 HTTP(S) 来建立连接,但这只是 HTTP 涉及的范围。

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

通过使用 URI 方案

ws://...
wss://...
,握手与 URI 解耦,允许未来发生变化时干扰更少。


0
投票

他们使用它是为了架构清晰,看起来没有技术限制为什么你不能纯粹使用

http
来处理你的websocket连接。

请注意,用于处理 websocket 连接的 javascript 客户端库(如 Paho)纯粹通过 http 协议处理 websocket,如果您显式提供以

ws
协议为前缀的主机,甚至会失败 - 展示代码中的一个简单示例:

// Create a client instance
client = new Paho.MQTT.Client(
    location.hostname, Number(location.port), "clientId"
);
© www.soinside.com 2019 - 2024. All rights reserved.