编写 WebSocket 服务器

您所在的位置:网站首页 浏览器服务器停止响应是什么意思 编写 WebSocket 服务器

编写 WebSocket 服务器

2023-05-04 20:17| 来源: 网络整理| 查看: 265

可以把子协议理解成一个自定义XML schema或文件类型声明。你仍然使用 XML 和它的语法,但是还要额外受限于你声明的格式。

WebSocket 子协议就是像这样的东西。它们不作任何假设实现,只是确立框架。就像一个文件类型或概要。与文件类型或概要类似,通信双方都需要同意子协议;于文件类型或概要不同的是,子协议在服务端实现,而不能由客户端参考第三方。

备注: 子协议在规范的章节 1.9,4.2,11.3.4 和 11.5 有做解释。

如果客户端需要指定子协议,需要发送如下消息头作为握手信息的一部分:

GET /chat HTTP/1.1 ... Sec-WebSocket-Protocol: soap, wamp

等价于:

... Sec-WebSocket-Protocol: soap Sec-WebSocket-Protocol: wamp

现在,服务端需要选择一个客户端建议且服务端支持的子协议。如果有多于一个的话使用客户端发送的第一个。如果我们的服务端可以支持soap和wamp,则在握手回复时,它会发送:

Sec-WebSocket-Protocol: soap

警告: 服务器不能发送多个Sec-Websocket-Protocol。如果服务器不想使用任何子协议,它就不应该发送任何Sec-WebSocket-Protocol header。发送空白 header 是不正确的。如果客户端没有得到它想要的子协议,它可以关闭连接。

如果您希望您的服务器遵守某些子协议,那么很自然地,您需要服务器上的额外代码。假设我们使用的是子协议 JSON。在这个子协议中,所有数据都以 JSON 的形式传递。如果客户端请求这个协议,而服务器想要使用它,服务器将需要一个 JSON 解析器。实际上,这是库的一部分,但是服务器需要传递数据。

备注: 为了避免命名冲突,建议将你的子协议名称加上域名字符串。如果您正在构建一个自定义聊天应用程序,该应用程序使用的是 Example Inc.独有的专有格式,那么您可以使用这个:Sec-WebSocket-Protocol: chat.example.com.注意,这不是必需的,它只是一个可选的约定,您可以使用任何字符串。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3