Websocket
2019-07-09 本文已影响0人
上山走18398
简介
Websocket 是啥?和socket有啥区别
Websocket protocol是HTML5一种新的协议,它实现了浏览器与服务器全双工通信
(full-duplex)
全双工通信:不只是client/Browser能够发起请求,Server端也能主动发起(直到关闭)
目的:即时通讯,替代轮询()
编程思想像一种处世之道
首先Websocket是基于HTTP协议的,或者说借用了HTTP的协议来完成一部分握手
如何实现即时,为啥要即时
WebSocket和Http协议区别和联系:
Http协议是非持久化(也可持久化?),单向的网络协议
在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。
但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。
即客户端请求我才回复,不能主动指示客户端做啥
比如我需要实时更新数据并展示数据,我只能把请求间隔尽量缩短---比如每1秒轮询,感觉像是实时更新,那请求的开销大不大,每一次请求,服务端都要处理,烦不烦?
从Server考虑,我有新的数据我就想发给客户端?
都是基于TCP,可靠的
WebSocket在建立握手时,数据是通过HTTP传输,
但是建立之后,在真正传输时候不需要HTTP协议
WebSocket如何实现:
模拟Socket通信
应用层协议(与HTTP类似)
双向通信协议
建立在TCP之上
连接过程:
1. 浏览器、服务器建立TCP连接 三次握手 //传输控制层,若失败后续都不进行
2. TCP连接成功后,浏览器通过HTTP协议向服务器传送WebSocket支持的版本号等信息
3. 服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据
4. 当收到连接成功的消息后,通过TCP通道进行传输通信
WebSocket与Socket的关系
Socket其实不是一个协议,而是为了方便使用TCP或UDP抽象出来的一层
是位于应用层和传输控制之间的一组接口
Socket是应用层与TCP/IP协议簇通信的中间软件抽象层,一组接口
通信时通过Socket连接:Socket利用TCP/IP协议建立TCP连接(封装了TCP/IP ,便于调用)
Socket是传输控制层协议
WebSocket是应用层协议
参考连接:https://blog.csdn.net/wwd0501/article/details/54582912