十分钟学会websocket原理(即时消息通讯)

  • 时间:
  • 浏览:2
  • 来源:uu快3app赚钱_uu快3大小计划注册

Origin: http://example.com

但会 Websocket只需用一次HTTP握手,统统说整个通讯过程是建立在一次连接/清况 中,也就避免了HTTP的非清况 性,服务端会老会 知道你的信息,直到你关闭请求,但会 就避免了接线员要反复解析HTTP协议,需用查看identity info的信息。

服务端:balabalabalabala

服务端:哈哈哈哈哈啊哈哈哈哈

言归正传,亲戚亲戚大伙儿来说Websocket吧

简单地说但会 ,服务器是但会 很懒的冰箱(这是个梗)(后会、也能主动发起连接),但会 上司有命令,肯能有客户来,不管多么累全是好好接待。

熟悉HTTP的童鞋肯能发现了,这段这类HTTP协议的握手请求中,多了十几个 东西。我会顺便讲解下作用。

客户端:啦啦啦,有没办法 新消息(Request)

但会 ,Sec-WebSocket-Accept你这些则是经过服务器确认,但会 加密后来 的Sec-WebSocket-Key。 服务器:好啦好啦,知道啦,你还也能看我的ID CARD来证明行了吧。。

Draft(协议版本),在最初的后来 ,Websocket协议还在Draft阶段,各种奇奇不为什么会么会协议全是,但会 还有统统期奇奇怪怪不同的东西,那些Firefox和Chrome用的全是但会 版本这类的,当初Websocket协议太大但会 但会 什么的什么的问题 报告 。。不过现在还好,肯能定下来啦~亲戚亲戚大伙儿都使用的但会 东西~ 脱水:服务员,帮我的是13岁的噢→_→

四种 生活需用很快的传输速率,四种 生活需用更多的’电话’。你这些种生活全是原因分析分析’电话’的需求没办法 高。

长连接:如comet的长连接。客户端向服务器发送Ajax请求,连接上服务器后,客户端与服务器会老会 保持连接。当服务器有更新消息全是立刻发送到客户端,而连接不断开。(长轮询是连接断开,长连接是连接不断开)

Connection: Upgrade

长轮询场景再现:

首先,Sec-WebSocket-Key是但会 Base64

着实接线员很快速,但会 每次全是听没办法 一堆,传输速率也会有所下降的,一块儿还得不断把那些信息转交给客服,不但浪费客服的避免时间,但会 全是在网路传输中消耗太大的流量/时间。

首先,Websocket是但会 持久化的协议,相对于HTTP你这些非持久的协议来说。简单的举个例子吧,用目前应用比较广泛的PHP生命周期来解释。

Sec-WebSocket-Protocol: chat, superchat

通俗的说但会 ,服务器肯能每天要接待太大客户了,是个健忘鬼,你一挂电话,他就把你的东西全忘光了,把你的东西全丢掉了。你第二次还得再告诉服务器一遍。

客户端:啦啦啦,有没办法 新信息,没办法 搞笑的话就等有了才返回给我吧(Request) -loop

四种 生活接线员基本上传输速率是足够的,但会 每次都卡在客服(Handler)了,老有客服避免传输速率太慢。,原因分析分析客服不够。Websocket就避免了但会 但会 什么的什么的问题 ,建立后,还也能直接跟接线员建立持久连接,有信息的后来 客服想最好的依据 通知接线员,但会 接线员在统一转交给客户。

Host: server.example.com

服务端:。。。。。没。。。。没。。。没办法 (Response) —- loop

——————–

依然是固定的,告诉客户端即将升级的是Websocket协议,而全是mozillasocket,lurnarsocket肯能shitsocket。

但会 还也能通后来 边说的long poll和ajax

哦对了,忘记说了HTTP还是但会 清况 协议。

服务端:ok,确认,已升级为Websocket协议(HTTP Protocols Switched)

客户端:啦啦啦,有没办法 新信息(Request)

客户端:。。。。好吧,啦啦啦,有新信息么?

话说,你BB了没办法 多,跟Websocket有那些关系呢?_(:з」∠)_好吧,我正准备说Websocket呢。。

服务端:额。。 等待时间到有消息的后来 。。来 你还也能(Response)

long poll(长轮询)

客户端:啦啦啦,有没办法 新消息(Request)

首先HTTP有1.1和1.0之说,全是后来 所谓的keep-alive,把多个HTTP请求合并为但会 ,但会 Websocket着实是但会 新协议,跟HTTP协议基本没办法 关系,但会 为了兼容现有浏览器的握手规范而已,全是后来 说它算是HTTP协议上的四种 生活补充

Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=

——————技术解析每种完毕——————

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

GET /chat HTTP/1.1

Connection: Upgrade

首先亲戚亲戚大伙儿来看个典型的Websocket握手(借用Wikipedia的。。)

何为被动性呢,着实但会 ,服务端也能主动联系客户端,也能有客户端发起。

从后边还也能看出着实你这些种生活最好的依据 ,全是在不断地建立HTTP连接,但会 等待时间服务端避免,还也能体现HTTP协议的另外但会 特点,被动性。

服务端:balabalabalabala

在HTTP1.1中进行了改进,使得有但会 keep-alive,全是后来 说,在但会 HTTP连接中,还也能发送多个Request,接收多个Response。但会 请记住Request = Response, 在HTTP中永远是但会 ,但会 request对应但会 response(像不像Map的key-value键值对)。但会 你这些response也是被动的,也能主动发起。

HTTP/1.1 101 Switching Protocols

后边的,Sec-WebSocket-Protocol则是表示最终使用的协议。

ajax轮询

服务端:你好烦啊,没办法 啊。。(Response)

但会 服务器会返回下列东西,表示肯能接受到请求, 成功建立Websocket啦!

另外Html5是指的一系列新的API,肯能说新规范,新技术。Http协议四种 生活也能1.0和1.1,但会 跟Html四种 生活没办法 直接关系。。通俗来说,你还也能用HTTP协议传输非Html数据,

从后边很容易看出来,不管为什么会么会样,后边你这些种生活全是非常消耗资源的。

服务端:ok,有的后来 会告诉你的。

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

客户端:啦啦啦啦,有新信息么?

但会 ,Sec_WebSocket-Protocol是但会 用户定义的字符串,用来区分同URL下,不同的服务所需用的协议。简单理解:今晚帮我服务A,别搞错啦~

Upgrade: websocket

轮询来 模拟出这类的效果

HTTP的生命周期通过Request来界定,全是后来 但会 Request但会 Response,没办法 在HTTP1.0中,这次HTTP请求就开始了。

在讲Websocket后来 ,你还也能顺带着讲下long poll和ajax轮询的原理。

ajax轮询 需用服务器有很快的避免传输速率和资源。(传输速率)long poll 需用有很高的并发,全是后来 说一块儿接待客户的能力。(场地大小)

Sec-WebSocket-Version: 13

就变成了但会 ,只需用经过一次HTTP请求,就还也能做到源源不断的信息传送了。(在应用tcp连接设计中,你这些设计叫做回调,即:你有信息了再来通知我,而全是我傻乎乎的每次跑来别问我 )

客户端:啦啦啦,有没办法 新信息,没办法 搞笑的话就等有了才返回给我吧(Request)

但会 的协议避免了后边同步有延迟,但会 还非常消耗资源的你这些清况 。没办法 为那些他会避免服务器上消耗资源的什么的什么的问题 呢?

客户端:麻烦你有信息的后来 推送给我噢。。

通后来 边你这些例子,亲戚亲戚大伙儿还也能看出,你这些种生活最好的依据 都全是最好的最好的依据 ,需用统统资源。

Upgrade: websocket

Upgrade: websocket

但会 就还也能避免客服避免传输速率过慢的什么的什么的问题 了。

Upgrade: websocket

统统在你这些清况 下冒出了,Websocket冒出了。他避免了HTTP的这十几个 什么的什么的问题 。首先,被动性,当服务器完成协议升级后(HTTP--->Websocket),服务端就还也能主动推送信息给客户端啦。统统后边的情景还也能做如下修改。

ajax轮询的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器算是有新信息。

一块儿由客户主动询问,转换为服务器(推送)有信息的后来 就发送(当然客户端还是等主动发送信息过来的。。),没办法 信息的后来 就交给接线员(Nginx),不需用占用四种 生活传输速率就慢的客服(Handler)了

说完你这些,亲戚亲戚大伙儿再来说一说后边的不够

Connection: Upgrade

你这些但会 Websocket的核心了,告诉Apache、Nginx等服务器:

注意啦,我发起的是Websocket协议,快点帮我找到对应的助理避免~全是那个老土的HTTP。

统统ajax轮询和long poll全是肯能存在你这些清况 。

服务端:好啦好啦,有啦你还也能。(Response)

服务端:月线正忙,请稍后再试(1503 Server Unavailable)

服务端:没办法 。。(Response)

最后,Sec-WebSocket-Version是告诉服务器所使用的Websocket

Sec-WebSocket-Version: 13

服务端:笑死我了哈哈哈哈哈哈哈

你TMD又BBB了没办法 久,那到底Websocket有那些鬼用,http long poll,肯能ajax轮询不都还也能实现实时信息传递么。

这里开始但会 HTTP最后负责的区域了,告诉客户,我肯能成功切换协议啦~

一块儿,在传统的最好的依据 上,要不断的建立,关闭HTTP协议,肯能HTTP是非清况 性的,每次全是重新传输identity info(鉴别信息),来告诉服务端你是谁。

Sec-WebSocket-Protocol: chat

长轮询,如comet长轮询,着实原理跟ajax轮询差太大,全是采用轮询的最好的依据 ,不过采取的是阻塞模型(老会 打电话,没收到就不挂电话),全是后来 说,客户端发起连接后,肯能没消息,就老会 不返回Response给客户端。直到有消息才返回,返回完后来 ,连接断开。直到客户端避免后来 ,又会向服务器从新发送Ajax请求。,周而复始。长轮询四种 生活全是四种 生活真正的推送技术,而但会 传统轮询技术的但会 变种。但会 其作用是:也能在真正推送技术无法实现时模拟推送机制。

首先Websocket是基于HTTP协议的,肯能说借用了HTTP的协议来完成一每种握手。

至此,HTTP肯能完成它所有工作了,接下来但会 完全按照Websocket协议进行了。具体的协议就都没办法 这阐述了。

客户端:啦啦啦,有没办法 新信息(Request)

WebSocket是HTML5出的东西(协议),全是后来 说HTTP协议没办法 变化,肯能说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算),换句话说,WebSocket支持持久连接(思考:那些是持久连接?)

至于为什么会么会在不支持Websocket的客户端上使用Websocket。。答案是:也能

Connection: Upgrade

客户端:啦啦啦,有没办法 新信息(Request)

Sec-WebSocket-Protocol: chat, superchat

着实亲戚亲戚大伙儿所用的应用tcp连接是要经过两层代理的,即HTTP协议在Nginx等服务器的解析下,但会 再传送给相应的Handler(PHP等)来避免。简单地说,亲戚亲戚大伙儿有但会 非常快速的接线员(Nginx),他负责把什么的什么的问题 转交给相应的客服(Handler)。

服务端:月线正忙,请稍后再试(1503 Server Unavailable)

客户端:啦啦啦,帮我建立Websocket协议,需用的服务:chat,Websocket协议版本:17(HTTP Request)

encode的值,你这些是浏览器随机生成的,告诉服务器:泥煤,不须忽悠窝,帮我验证尼是全是真的是Websocket助理。

场景再现:

服务端:没办法 (Response)