第一章: WebSocket初识

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

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

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

单工 Simplex

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

半双工 Half Duplex

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


9988457-2f07e40fc8f4b7b5.gif
timg.gif

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

全双工 Full Duplex

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


9988457-2f686556f2321847.jpg
timg (1).jpg

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

9988457-e27e3c835a0a3254.jpg
timg.jpg

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

9988457-94676ccaa1fae8b5.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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值