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
上一篇下一篇

猜你喜欢

热点阅读