首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

WebSocket 协议(6)

WebSocket 协议(6)

4.2 服务端要求WebSocket 服务器可能会卸下一些对连接的管理操作,而将这些管理操作交由网络中的其他代理,比如负载均衡服务器或者反向代理服务器。对于这种情况,在这个技术说明中,将组成服务端的基础设施的所有部分合起来视为一个整体。
比如,在一个数据中心,会有一个服务器专门用户响应客户端的握手请求,在握手成功之后将连接转交给实际处理任务的服务器。在这份技术说明中,服务端指代的就是这里的两台机器的组成的整体。
4.2.1 读取客户端的握手请求当客户端发起一个 WebSocket 请求时,它会发送握手过程种属于它那一部分的内容。服务端必须解析客户端提交的握手请求,以从中获得生成服务端响应内容的必要的信息。
客户端的握手请求有接下来的几部分构成。服务端在读取客户端请求时,发现握手的内容和下面的描述不相符(注意  ,头字段的顺序是不重要的),包括但不限于那些不符合相关 ABNF 语法描述的内容时,必须停止对请求的解析并返回一个具有适当的状态码 HTTP 响应(比如 400 Bad Request)。
  • 必须是 HTTP/1.1 或者以上的 GET 请求,包含一个 “请求资源标识符 Request-URI”,请求资源标识符遵循第 3 节中定义的 /resource name/。
  • 一个 |Host| 头字段,向服务器指明需要访问的服务名称(域名)
  • 一个 |Upgrade| 头字段,值为大小写不敏感的 websocket 字符串
  • 一个 |Connection| 头字段,它的值是大小写不敏感的字符串 Upgrade
  • 一个 |Sec-WebSocket-Key| 头字段,它的值是一段使用 base64 编码  后的字符串,解码之后是 16 个字节的长度。
  • 一个 |Sec-WebSocket-Version| 头字段,它的值是 13.
  • 可选的,一个 |Origin| 头字段。这个是所有浏览器客户度必须发送的。如果服务端限定只能由浏览器作为其客户端的话,在缺少这个字段的情况下,可以认定这个握手请求不是由浏览器发起的,反之则不行。
  • 可选的,一个 |Sec-WebSocket-Protocol| 头字段。由一些值组成的列表,这些值是客户端希望使用的子协议,按照优先级从左往右排序。
  • 可选的,一个 |Sec-WebSocket-Extensions| 头字段。有一些值组成的列表,这些值是客户端希望使用的扩展。具体的表示在第 9 节。
  • 可选的,其他头字段,比如那些用于向服务端发送 cookie 或则认证信息。未知的头字段将被忽略  

返回列表