websocket是Html5 提供的一个浏览器与服务器间进行全双工通信的网络技术,依靠这种技术能够实现客户端和服务器端的长链接,双向实时通讯。html
websocket是html5出的一个协议 跟http协议没有关系 下面简单介绍下websocket的协议以及握手html5
websocket和http同样都是基于tcp协议的传输 websocket和http是两种不一样的东西 客户端要创建 websocket连接时候要在header标记一个Upgrade的HTTP请求表示请求升级 服务端返回响应101的状态码 完成握手之后再发送收据就么有http的事了web
Websocket是一个持久化的协议 协议分为ws(80端口)协议 和wss(443端口)协议浏览器
websocket是基于http协议 也能够说借用了http完成了一部分握手bash
客户端发送的握手请求服务器
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
复制代码
上面依次介绍下websocket
GET /chat HTTP/1.1网络
能够是是chat 聊天 也能够game 游戏socket
Connection: Upgrade Upgrade: websockettcp
这告诉服务器给升级到websocket协议
Sec-WebSocket-Protocol: chat, superchat
用户自定义的字符串 在同一个url下 不一样服务的所须要的协议 好比聊天chat 也能够其余的自定义
Sec-WebSocket-Version 告诉服务器所使用的协议版本
Sec-WebSocket-Key 是base64加密的字符串 浏览器自动生成
服务端响应客户端握手请求
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
复制代码
上面依次介绍下