Websocket协议(学习总结)

说到协议,我们第一反应都会想到http,既然这样,那就对Http协议再简单的BB一番,没有对比就没有伤害,我们来见证一下最终是谁会是受伤的一方,当然结果还是你说了算,不要问小编为什么,因为你牛逼啊。

Http协议:

众所周知的超文本传输协议,所有的万维网都遵循此协议,这家伙出道早(1945年传说中RFC-http1.0),加上又没有竞争对手可称之为在协议界的一大霸主。

建立在TCP协议之上,称之为http,但是建立在SSL和TLS协议层之上,又变成了人们常说的https。总之不管怎样,他们只是所承载的协议层不同罢了,不要太介怀。如果你很是介怀,没办法,小编只能说你先去熟悉网络的7层协议,一层层分析,慢慢介怀去。

再来简单说下,http请求响应模式:

宏观上看是不是超级简单?一个Request 对应一个 Response。建立连接后,客户端发送一次请求,服务端确认收到了,就被动反应一下。看起来很不友好的样子,在1.0时更可怜,默认的是短连接,客户端和服务端之间频繁的建立连接,频繁的断开连接,在1.1起开始引入keep-alive(长连接)即是在http请求的header中加了一个识别:connetion:keep-alive(代表告诉服务器,我要的是长连接)。

但依旧解决不了服务端的‘高冷’和‘惰性’。因此引发了下一个问题:http协议是有很大缺陷的。

Http协议的缺点:

通过上面简单的介绍,我们明显感觉到,客户端和服务端之间的交互有点生硬,服务端有点被动,客户端问一句,服务端答一句,客户端没命的啰嗦就会导致浪费时间和带宽(针对于短连接来说)。

如果是长连接的话,那可能更惨,客户端发一个请求,服务端没有及时返回,链接就一直建立着,上面也说了,http的相应模式无论是多少台客户端发出请求,服务端的标配是一个request对应一个response,如此说来,如果很多的这样的链接的话,那么服务端就有扛不住的时候,所以有的时候就会碰到server is too busy,这时你又该骂娘了。

说到这,我们再来说说,这种不友好的相应模式最终的根源是啥。

哦,原来是有两种机制导致的,Ajax轮询long poll的轮询机制,分别对应短连接和长连接的实现形式。

ajax轮询是,孜孜不倦,乐在其中啊,那我就隔几秒请求一次,服务端和客户端来回的断开建立,就这样一问一答直到客户端拿到了自己想要的东西,所以这种沟通贼浪费时间和宽带。

long poll呢也是采用了轮询机制,但是他轮询的时间比较长,如果把ajax看成是发短信,那他就是打电话了(可以称之为阻塞模型),客户端就和服务端杠上了,高冷是吗?没关系,我会一直等,等你有数据反馈给我,就这样一直占线轮询。

综上所述,http的一大‘亮点’就是,客户端不请求,服务端绝对不会主动。凸显了http数据传输的一个被动性。

WebSocket协议:

这个社会是发展的,所有风靡一时的荣耀最终都会被崛起的新事物给慢慢取代,当然说的有点严重,反正就是那意思了。鉴于http的缺点,伴随着http的发展,直到h5出现,Websocket应运而生。

不过,新事物的单身往往都是踩在巨人的肩膀上的,WebSocket也是基于http协议的一种持久化的协议,并不是跟http毫无关系,可以说是http协议的一种进化。

那么Websocket是怎样建立连接的呢?

GET /chat HTTP/1.1

Host: server.example.com

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

Sec-WebSocket-Protocol: chat, superchat

Sec-WebSocket-Version: 13 Origin: http://example.com

以上是请求的头,Websocket很是高调啊,生怕对方不知道是自己的协议,整了这么多关键字眼,废话不多说,抽几个关键的说说吧。

Upgrade && Connection:告诉服务端我采取的是什么协议。

Sec-WebSocket-Key:别乱来,我是有身份证的。

剩下的就不说了,很显然,客户端是比较仔细的,定制的很是详细。

服务器接到请求后,就回应了下:

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=

Sec-WebSocket-Protocol: chat

看起来服务端也是很守规矩,告诉客户端,你看看信息对不对。

细心的同学会发现,不对啊,那个发送的key和请求的key怎么不一样呢?孩子别太单纯那是服务端加过密的,小编没搞错的话应该是SHA-1的加密方式。

好了,以上就是客户端和服务端建立连接的过程。

Websocket特点:

回归到http协议的被动性和一些缺点,那么Websocket协议就凸显的很好了,请求只需要成功建立一次,这次咸鱼翻身了,服务端会屁颠屁颠的主动把信息反馈给客户端,完美解决了之前的被动性,提高沟通效率,减少了沟通成本,真正建立了久连接。

但是,人无完人,websockt需要浏览器的支持,如果有些浏览器不支持,也没什么卵用了。另外假如设置的有代理,需要代理也支持。更要命的是需要服务器支持,如果服务器不支持,那对不起,发了一堆什么破乱玩意,本座不认识,打回!

另外,websocket实现的是双向通道,对网络的链接要求很高,这是其优点也是缺点,一旦一方网络有问题,那就直接game-over了。

小编有话说:

以上是本人看了些资料,加以消化和总结的,有什么不对的地方希望给出改正,另外,两种协议终究哪个更好,你们说了算。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,302评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,563评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,433评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,628评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,467评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,354评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,777评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,419评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,725评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,768评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,543评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,387评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,794评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,032评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,305评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,741评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,946评论 2 336

推荐阅读更多精彩内容