了解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属于长连接,受网络限制比较大,在某些场景网络断掉,就需要重连

目录
相关文章
|
自然语言处理 搜索推荐 Docker
CosyVoice实现声音复刻
这篇文章介绍了如何使用CosyVoice平台实现个性化的声音复刻,包括录制样本音频、上传处理以及生成定制化语音的全流程。
2167 6
CosyVoice实现声音复刻
|
网络安全 数据安全/隐私保护
使用静态IP时出现“代理检测失败”的原因是什么?
随着数字化时代的加速发展,网络安全与隐私保护成为核心需求,HTTP凭借其独特优势成为新时代热门选择。本文分析了“代理检测失败,请确认代理IP的有效性”这一问题,主要原因包括:代理IP失效、配置错误、网络不稳定、类型不匹配及请求频率过高。解决建议为检查IP有效性、确保正确配置、选择合适代理类型并控制请求频率。希望这能帮助您解决问题!
770 9
使用静态IP时出现“代理检测失败”的原因是什么?
|
网络安全 数据安全/隐私保护 Windows
websocket优缺点
websocket优缺点
770 2
|
移动开发 网络协议 网络安全
详解 WebSocket
详解 WebSocket
684 0
|
安全 Unix Linux
【专栏】`rmdir`命令在Linux和类Unix系统中用于删除空目录,不适用于非空目录
【4月更文挑战第28天】`rmdir`命令在Linux和类Unix系统中用于删除空目录,不适用于非空目录。基本语法为`rmdir [options] directory...`,常用选项包括`-p`(递归删除空父目录)和`--ignore-fail-on-non-empty`(忽略非空目录错误)。与`rm -r`相比,`rmdir`更安全,适用于知道目录为空的情况。在自动化脚本和清理构建目录等场景中,`rmdir`能有效管理空目录。使用时确保目录为空,避免误删,必要时结合`ls`和`sudo`检查或提升权限。
413 1
|
存储 缓存 负载均衡
基于C++的高性能分布式缓存系统设计
基于C++的高性能分布式缓存系统设计
511 1
|
数据安全/隐私保护 图形学
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
|
移动开发 前端开发 Java
详解WebSocket
详解WebSocket
773 0
|
XML 图形学 C++
技术经验分享:ASSIMP概述
技术经验分享:ASSIMP概述
362 0