了解WebSocket

简介: 熟悉下websocket协议的相关原理和优缺点

以tcp/ip参考模型为例,websocket是在应用层中
image.png

一、为什么会出现websocket?

通常情况下,客户端与服务端之间建立连接后,都是通过客户端来发送请求,服务端收到请求后才发送响应,这种情况可以满足大部分的场景,比如网页
但是,考虑到存在这样一种场景,需要服务端主动给客户端发送数据,如网页游戏中,服务端需要时时反馈数据给到客户端,这种动态刷新客户端页面的场景如何解决呢
一开始的方案是通过客户端定时发送请求来获取数据的刷新,但是这种方式会存在很多的无效请求,浪费网络宽带资源
改进,客户端这边依旧通过定时的方式不断发送请求,服务端这边并不做及时的响应,除非他有新的数据更新。这种方式比较适合数据更新频率不高的场景。但是如果服务端数据更新频率高,这种方式的优势并不明显了。
基于以上的需求,出现全新的应用层协议:websocket,主要用于动态刷新的场景。

二、websocket的特点

1.建立于TCP协议之上,支持全双工通信,保证实时性
2.与Http协议相兼容给,握手阶段采用了http
3.可以发送文本,也可以发送二进制数据
4.服务器的网址就是url,协议标识符是ws(如果加密,则为wss)

三、websocket的实现

1.客户端想服务器发送一个HTTP请求,请求包含了附加头信息,其中Upgrade: WebSocket
2.服务器收到请求并解析,看到Upgrade: WebSocket明白这是一个申请协议升级的请求
3.服务器按照升级的协议向客户端发送响应,这时,客户端与服务端就建立了websocket连接

三、websocket的缺点

websocket属于长连接,受网络限制比较大,在某些场景网络断掉,就需要重连

目录
相关文章
|
3月前
websocket 的使用
websocket 的使用
|
前端开发 网络协议 API
什么是WebSocket?
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。
1855 0
什么是WebSocket?
|
2月前
|
存储 网络协议 JavaScript
WebSocket相关知识
WebSocket相关知识
|
1月前
|
Web App开发 定位技术 C#
|
2月前
|
移动开发 前端开发 Java
详解WebSocket
详解WebSocket
27 0
|
3月前
|
XML JSON 前端开发
WebSocket是什么
【4月更文挑战第27天】WebSocket,即Web浏览器与Web服务器之间全双工通信标准。
|
3月前
websocket
websocket
25 0
|
3月前
|
移动开发 网络协议 Java
WebSocket二
WebSocket二
|
12月前
|
移动开发 网络协议 前端开发
WebSocket理解
WebSocket理解
|
网络协议 定位技术 PHP
【说说你对webSocket的理解?】
【说说你对webSocket的理解?】