第一章: WebSocket初识

简介: 关于webSocket的话题并不少见,比如我们经常遇到的聊天室啦,实时的消息互动啦,巴拉巴拉很多东西都会使用的一项技术。接下来我们就具体来看看webSocket到底是什么东西以及具体的应用场景WebSocket协议是基于TCP的一种新的网络协议。

关于webSocket的话题并不少见,比如我们经常遇到的聊天室啦,实时的消息互动啦,巴拉巴拉很多东西都会使用的一项技术。接下来我们就具体来看看webSocket到底是什么东西以及具体的应用场景

WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
WebSocket通信协议于2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范。

这一段是百度百科给的解释,在这里提到了一个关键词 全双工,接下来我们就要提到三个概念了

单工 Simplex

通信双方被明确的分为发送器和接收器,只允许单向的数据传输。
举个栗子:比如收音机,它除了接受信号并播放之外就没有什么功能了,而此时的电台就承担了发送器这一角色

半双工 Half Duplex

通信双方既是发送器也是接收器,但在同一时刻只允许向一个方向传送数据。
举个栗子:比如步话机,我们经常看到的场景是这样的
现场的客户:喂喂, 为什么我的网页访问不到啊??? over
远程的技术:什么?我先去查查网络问题 over
现场的客户:你们到底行不行啊,我花了大价钱你们就这么个服务? over
远程的技术:大哥你别慌,我已经跟服务器那边联系#@$!我们正在抓紧时间检测问题#%……#¥% over
...
现场的客户:你们别找了,我的网线被老鼠啃了 over
远程的技术:...我去年买了个表


img_e0c3ea98b6e7938f479b827d9240f848.gif
timg.gif

我们可以看到这种类似于回合制的场景就是半双工的最大特点了

全双工 Full Duplex

通信双方既是发送器也是接收器,并且允许同时相互发送消息。
举个栗子:
现场的客户:喂喂, 为什么我的网页访问不到啊???
远程的技术:什么?我先去查查网络问题
现场的客户:你们到底行不行啊...(被打断)
远程的技术:大哥你别慌,我已经跟服务器那边联系#@$!我们正在抓紧时间检测问题#%……#¥%!@
现场的客户:...我好像..(再次被打断)
远程的技术:也有可能是xx问题,我再看看
现场的客户:...你们不用..(再再次被打断)
远程的技术:不不不,已经确定不是这个问题了,真是奇了怪了


img_542493c1f026512ab8d567e6846ffbf3.jpe
timg (1).jpg

...
现场的客户:你们别找了,我的网线被老鼠啃了
远程的技术:你为什么不早说???
现场的客户:...你倒是给我机会说啊

img_8068015e3b6e5e488de5a6f1bc65e63e.jpe
timg.jpg

好了,以上就是关于通信方式的三种方式了。接下来我们来了解一下webSocket具体是如何工作的
首先我们先看看他的大兄弟http是如何工作的

img_f4063293343abd0747a750fd820db5e7.png
无标题.png

由上图可以得到一个结论http真是一个话痨,啊,不是,我们得到的结论是如果客户端需要获取信息的话,就需要不断的通过http请求访问服务器来得到信息。在这里我们来看看下面的几个概念

短连接

--连接开始--
http:我想要查一下托尼老师的信息
server:好啊,这是他的家庭住址,电话...@#&&%%*
--连接关闭--
--连接开始--
http:刚刚的信息搞掉了,你再给我发一份呗
server:???什么上一份,你再说啥?
--连接关闭--
--连接开始--
http:就刚刚的啊
server:???什么刚刚的,你再说啥?
--连接关闭--
--连接开始--
http:我想要查一下托尼老师的信息
server:好啊,这是他的家庭住址,电话...@#&&%%*
--连接关闭---

由此可知,服务器是属鱼的,你给他说的东西他转眼就忘了

长连接

--连接开始--
http:我想要查一下托尼老师的信息
server:好啊,这是他的家庭住址,电话...@#&&%%*
http:刚刚的信息搞掉了,你再给我发一份呗
server:这是他的家庭住址,电话...@#&&%%*
http:托尼老师叫什么来着?
server:这是他的家庭住址,电话...@#&&%%*
http:托尼老师是做什么?
server:这是他的家庭住址,电话...@#&&%%*
--连接关闭--

由此可知,客户端也是是属鱼的,你给他说的东西他转眼就忘了,我们可以看到长连接对比与短连接来说的话,我们连接了长连接的话,我们就可以重复使用了,避免了频繁的请求

短轮询

http:蓝翔技校招生了吗?
server:...没有
http:蓝翔技校招生了吗?
server:...没有
http:蓝翔技校招生了吗?
server:...没有
http:蓝翔技校招生了吗?
server内心os:你怎么就不问问新东方呢?

短轮询的话很简单,就是每隔几秒就向服务器发送一次请求用于获取数据

长轮询

http:蓝翔技校招生了吗?没有的话等招生了再告诉我
...十年后
server:蓝翔技校招生了,三百个机位不锈钢,五百个技工技术强@#$@#!!@#
北大青鸟http:???

长轮询的话,发送一次请求后,就等到服务器有响应时才进行返回

好了,关于webSocket的姿势你get到了吗?

目录
相关文章
|
5月前
|
缓存 移动开发 安全
WebSocket协议:5分钟从入门到精通
WebSocket协议:5分钟从入门到精通
|
6月前
|
移动开发 前端开发 网络协议
WebSocket从入门到实战
WebSocket从入门到实战
168 0
|
7月前
|
前端开发 JavaScript Java
【面试题精讲】什么是websocket?如何与前端通信?
【面试题精讲】什么是websocket?如何与前端通信?
|
7月前
|
移动开发 网络协议 安全
WebSocket详解 - 基础概念
WebSocket详解 - 基础概念
76 1
|
8月前
|
监控 网络协议 数据可视化
Websocket原理和实践
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
304 0
Websocket原理和实践
|
9月前
|
数据安全/隐私保护
Netty实战(十四)WebSocket协议(二)
我们之前说过为了将 ChannelHandler 安装到 ChannelPipeline 中,需要扩展了ChannelInitializer,并实现 initChannel()方法
104 0
|
9月前
|
移动开发 JavaScript 网络协议
常用的Websocket技术一览
Websocket是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据,当然也支持客户端发送数据到服务端。通常用来社交聊天、弹幕、多玩家游戏、协同编辑、股票基金实时报价、资讯自动更新等场景,那么今天就简单聊一下在Java开发中对Websocket的技术选型。
|
11月前
|
移动开发 Java API
WebSocket的那些事(2-实操篇)
WebSocket的那些事(2-实操篇)
|
XML 移动开发 Java
WebSocket 详解教程 下
WebSocket 详解教程 下
262 0
|
移动开发 JavaScript 前端开发
WebSocket 详解教程 上
WebSocket 详解教程 上
398 0
WebSocket 详解教程    上