HTTP/1.0中大多实现为每个请求/响应交换使用新的连接
HTTP/1.1中一个连接可用一次或多次请求/响应交换
HTTP协议中,服务端不能主动联系客户端,只能由客户端发起
webSocket服务器和客户端均可主动发送数据
WebSocket对象提供了一组API,用于创建和管理WebSocket连接,以及通过连接发送的接收数据
WebSocket其实是一个新协议,根HTTP协议基本没关系,只是为了兼容现有浏览器的握手规范而已,
借用了HTTP的协议来完成握手。再送发数据时就不需要HTTP协议了。
建立接连的握手
当Web应用程序用new WebSocket(url)接口时,浏览器就开始与地址为url的服务器建立握手连接的过程
1.浏览器与WebSocket服务器通过TCP握手建立连接,如果这个建立连接失败,那么后面的过程就不会执行,
Web应用程序将收到错误消息通知
2.在TCP建立连接成功后,浏览器通过http协议传送WebSocket支持的版本号,协议的字版本号,原始地址,
主机地址等一系列字段给服务器端
3.WebSocket服务器收到浏览器发送来的请求后,如果数据包数据和格式正确,客户端和服务器端的协议版本号匹配等,
就接受本次握手连接,并给出相应的数据回复,同样回复的数据包也是采用http协议传输。
4.浏览器收到服务器回复的数据包后,如果数据包内容 格式 都没有问题,就表示本次连接成功,触发onopen消息,
此时Web 开发者就可以在此时通过send借口向服务器发送数据;否则握手连接失败,Web应用程序会收到on