websocket协议握手

websocket是Html5 提供的一个浏览器与服务器间进行全双工通讯的网络技术,依靠这种技术可以实现客户端和服务器端的长连接,双向实时通信。

websocket是html5出的一个协议 跟http协议没有关系 下面简单介绍下websocket的协议以及握手

websocket跟http关系

websocket和http一样都是基于tcp协议的传输 websocket和http是两种不同的东西 客户端要建立 websocket链接时候要在header标记一个Upgrade的HTTP请求表示请求升级 服务端返回响应101的状态码 完成握手以后再发送收据就么有http的事了

websocket协议

Websocket是一个持久化的协议 协议分为ws(80端口)协议 和wss(443端口)协议

websocket握手

websocket是基于http协议 也可以说借用了http完成了一部分握手

  • 客户端发送的握手请求

     GET  /chat HTTP/1.1
     Host: XXX.com
     Connection: Upgrade
     Upgrade: websocket
     Sec-WebSocket-Protocol: chat, superchat
     Sec-WebSocket-Version: 13
     Sec-WebSocket-key: XXXX
    复制代码

    上面依次介绍下

    1. GET /chat HTTP/1.1

      可以是是chat 聊天 也可以game 游戏

    2. Connection: Upgrade Upgrade: websocket

      这告诉服务器给升级到websocket协议

    3. Sec-WebSocket-Protocol: chat, superchat

      用户自定义的字符串 在同一个url下 不同服务的所需要的协议 比如聊天chat 也可以其他的自定义

    4. Sec-WebSocket-Version 告诉服务器所使用的协议版本

    5. Sec-WebSocket-Key 是base64加密的字符串 浏览器自动生成

  • 服务端响应客户端握手请求

    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
    Sec-WebSocket-Protocol: chat
    复制代码

    上面依次介绍下

    1. HTTP/1.1 101 Switching Protocols 就是返回101状态码
    2. Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk= 对Sec-WebSocket-key的加密 同意握手建立链接 客户端收到 Sec-WebSocket-Accept后 将本地的Sec-WebSocket-key 编码做一个对比来验证
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值