首页 > 解决方案 > 什么是 WebSocket 子协议?

问题描述

我一直在尝试在 nodejs 中从头开始实现 WebSocket 协议,这样做我有一个问题,自那以后就无人问津了。关于 websocket 的子协议到底是什么?WebSocket 构造函数的第二个参数是您指定“子协议”的位置 -

let socket = new WebSocket("ws://localhost:3000",["http",...]);

谁能给我一个明确的遮篷他们有什么目的?

标签: javascriptnode.jswebsocket

解决方案


Websocket 只是定义了一种交换任意消息的机制。这些消息的含义、客户端在任何特定时间点可以期待什么样的消息或允许他们发送什么消息完全取决于实现的应用程序。因此,您需要在服务器和客户端之间就这些事情达成一致。你可能会说……你需要一个协议规范。subprotocol 参数只是让客户端正式交换此信息。你可以为任何你想要的协议起任何名字。服务器可以简单地检查客户端在握手期间是否遵守该协议。您还可以使用它向服务器请求不同类型的协议,或将其用于版本控制(例如,当您引入my-protocol-v2,但仍然需要支持客户才理解my-protocol-v1)。


推荐阅读