第一章: WebSocket初识

  1. 云栖社区>
  2. 博客>
  3. 正文

第一章: WebSocket初识

gabriel丶 2018-12-06 15:24:00 浏览430
展开阅读全文

关于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到了吗?

网友评论

登录后评论
0/500
评论
gabriel丶
+ 关注