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

  • 时间:
  • 浏览:0
  • 来源:uu快3官方邀请码_uu快3app赚钱_彩神8

从里面都可否 看出觉得这有一种土办法,都有在不断地建立HTTP连接,之后 等待英文服务端防止,都可否 体现HTTP协议的另外有有一4个多 特点,被动性。

服务端:好啦好啦,有啦想要。(Response)

之后 ,Sec-WebSocket-Accept你什儿 则是经过服务器确认,之后 加密前一天的Sec-WebSocket-Key。 服务器:好啦好啦,知道啦,想要看我的ID CARD来证明行了吧。。

那我的协议防止了里面同步有延迟,之后 还非常消耗资源的你什儿 情况。不出为哪些地方他会防止服务器上消耗资源的什么的问题呢?

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

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

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

服务端:。。。。。没。。。。没。。。不出(Response) —- loop

言归正传,一点人来说Websocket吧

HTTP/1.1 101 Switching Protocols

客户端:啦啦啦,有不出新消息(Request)

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

——————–

服务端:balabalabalabala

至此,HTTP原应完成它所有工作了,接下来之后 完整版按照Websocket协议进行了。具体的协议就不出这阐述了。

就变成了那我,只都可否经过一次HTTP请求,就都可否 做到源源不断的信息传送了。(在线程设计中,你什儿 设计叫做回调,即:你有信息了再来通知我,而都有我傻乎乎的每次跑来告诉我 )

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

也不我有ajax轮询和long poll都有原应居于你什儿 情况。

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

注意啦,我发起的是Websocket协议,快点想要找到对应的助理防止~都有那个老土的HTTP。

也不我有在你什儿 情况下出现了,Websocket出现了。他防止了HTTP的这有几个什么的问题。首先,被动性,当服务器完成协议升级后(HTTP--->Websocket),服务端就都可否 主动推送信息给客户端啦。也不我有里面的情景都可否 做如下修改。

Host: server.example.com

轮询来 模拟出这类的效果

Sec-WebSocket-Version: 13

Sec-WebSocket-Protocol: chat

Connection: Upgrade

服务端:你好烦啊,不出啊。。(Response)

简单地说之后 ,服务器是有有一4个多 很懒的冰箱(这是个梗)(太久、只能主动发起连接),之后 上司有命令,原应有客户来,不管多么累都有好好接待。

Sec-WebSocket-Version: 13

Draft(协议版本),在最初的前一天,Websocket协议还在Draft阶段,各种奇奇不为什协议都有,之后 还有也不我有期奇奇怪怪不同的东西,哪些地方Firefox和Chrome用的都有有有一4个多 版本这类的,当初Websocket协议太久那我有有一4个多 大什么的问题。。不过现在还好,原应定下来啦~一点人都使用的有有一4个多 东西~ 脱水:服务员,想要的是13岁的噢→_→

你TMD又BBB了不出久,那到底Websocket哪些地方地方鬼用,http long poll,原应ajax轮询不都都可否 实现实时信息传递么。

另外Html5是指的一系列新的API,原应说新规范,新技术。Http协议有一种只能1.0和1.1,之后 跟Html有一种不出直接关系。。通俗来说,想要用HTTP协议传输非Html数据,

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

——————技术解析主次完毕——————

Sec-WebSocket-Protocol: chat, superchat

首先Websocket是基于HTTP协议的,原应说借用了HTTP的协议来完成一主次握手。

ajax轮询 都可否服务器有变慢的防止下行速率 和资源。(下行速率 )long poll 都可算是很高的并发,也之后 说共同接待客户的能力。(场地大小)

HTTP的生命周期通过Request来界定,也之后 有有一4个多 Request有有一4个多 Response,不出在HTTP1.0中,这次HTTP请求就之前 刚开始。

客户端:啦啦啦,有不出新信息(Request)

long poll(长轮询)

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

服务端:不出。。(Response)

服务端:balabalabalabala

共同由客户主动询问,转换为服务器(推送)有信息的前一天就发送(当然客户端还是等主动发送信息过来的。。),不出信息的前一天就交给接线员(Nginx),只能占用有一种下行速率 就慢的客服(Handler)了

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

客户端:啦啦啦,有不出新信息(Request)

ajax轮询

服务端:ok,有的前一天会告诉你的。

觉得接线员变慢速,之后 每次都有听不出一堆,下行速率 也会有所下降的,共同还得不断把哪些地方地方信息转交给客服,不但浪费客服的防止时间,之后 后要 在网路传输中消耗太久的流量/时间。

GET /chat HTTP/1.1

长轮询,如comet长轮询,觉得原理跟ajax轮询差太久,都有采用轮询的土办法,不过采取的是阻塞模型(经常打电话,没收到就不挂电话),也之后 说,客户端发起连接后,原应没消息,就经常不返回Response给客户端。直到有消息才返回,返回完前一天,连接断开。直到客户端防止前一天,又会向服务器从新发送Ajax请求。,周而复始。长轮询有一种都有有一种真正的推送技术,而之后 传统轮询技术的有有一4个多 变种。之后 其作用是:要能在真正推送技术无法实现时模拟推送机制。

觉得一点人所用的线程是要经过两层代理的,即HTTP协议在Nginx等服务器的解析下,之后 再传送给相应的Handler(PHP等)来防止。简单地说,一点人有有有一4个多 非常快速的接线员(Nginx),他负责把什么的问题转交给相应的客服(Handler)。

Upgrade: websocket

你什儿 之后 Websocket的核心了,告诉Apache、Nginx等服务器:

哦对了,忘记说了HTTP还是有有一4个多 情况协议。

encode的值,你什儿 是浏览器随机生成的,告诉服务器:泥煤,太久忽悠窝,想要验证尼是都有真的是Websocket助理。

在讲Websocket前一天,想要顺带着讲下long poll和ajax轮询的原理。

Connection: Upgrade

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

之后 ,Sec_WebSocket-Protocol是有有一4个多 用户定义的字符串,用来区分同URL下,不同的服务所都可否的协议。简单理解:今晚想要服务A,别搞错啦~

那想要都可否 防止客服防止下行速率 过慢的什么的问题了。

之后 都可否 通过里面说的long poll和ajax

首先,Sec-WebSocket-Key是有有一4个多 Base64

首先一点人来看个典型的Websocket握手(借用Wikipedia的。。)

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

Upgrade: websocket

服务端:额。。 等待英文到有消息的前一天。。来 想要(Response)

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

共同,在传统的土办法上,要不断的建立,关闭HTTP协议,原应HTTP是非情况性的,每次都有重新传输identity info(鉴别信息),来告诉服务端你是谁。

何为被动性呢,觉得之后 ,服务端只能主动联系客户端,只能有客户端发起。

客户端:啦啦啦,有不出新消息(Request)

说完你什儿 ,一点人再来说一说里面的过高

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

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

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

客户端:麻烦你有信息的前一天推送给我噢。。

Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=

之后 Websocket只都可否一次HTTP握手,也不我有说整个通讯过程是建立在一次连接/情况中,也就防止了HTTP的非情况性,服务端会经常知道你的信息,直到你关闭请求,那想要防止了接线员要反复解析HTTP协议,都可否查看identity info的信息。

客户端:啦啦啦,有不出新信息(Request)

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

有一种都可否变慢的下行速率 ,有一种都可否更多的’电话’。这有一种后要 原应’电话’的需求不出高。

Connection: Upgrade

从里面很容易看出来,不管为什样,里面这有一种都有非常消耗资源的。

长轮询场景再现:

场景再现:

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

Connection: Upgrade

之后 服务器会返回下列东西,表示原应接受到请求, 成功建立Websocket啦!

服务端:不出(Response)

首先HTTP有1.1和1.0之说,也之后 所谓的keep-alive,把多个HTTP请求合并为有有一4个多 ,之后 Websocket觉得是有有一4个多 新协议,跟HTTP协议基本不出关系,之后 为了兼容现有浏览器的握手规范而已,也之后 说它算是 HTTP协议上的有一种补充

在HTTP1.1中进行了改进,使得有有有一4个多 keep-alive,也之后 说,在有有一4个多 HTTP连接中,都可否 发送多个Request,接收多个Response。之后 请记住Request = Response, 在HTTP中永远是那我,有有一4个多 request对应有有一4个多 response(像不像Map的key-value键值对)。之后 你什儿 response也是被动的,只能主动发起。

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

Upgrade: websocket

通过里面你什儿 例子,一点人都可否 看出,这有一种土办法都都有最好的土办法,都可否也不我有资源。

Origin: http://example.com

依然是固定的,告诉客户端即将升级的是Websocket协议,而都有mozillasocket,lurnarsocket原应shitsocket。

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

WebSocket是HTML5出的东西(协议),也之后 说HTTP协议不出变化,原应说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算),换句话说,WebSocket支持持久连接(思考:哪些地方是持久连接?)

客户端:啦啦啦,想要建立Websocket协议,都可否的服务:chat,Websocket协议版本:17(HTTP Request)

这里之前 刚开始之后 HTTP最后负责的区域了,告诉客户,我原应成功切换协议啦~

话说,你BB了不出多,跟Websocket哪些地方地方关系呢?_(:з」∠)_好吧,我正准备说Websocket呢。。

Upgrade: websocket

Sec-WebSocket-Protocol: chat, superchat

有一种接线员基本上下行速率 是足够的,之后 每次都卡在客服(Handler)了,老有客服防止下行速率 太慢。,原应客服过高 。Websocket就防止了那我有有一4个多 什么的问题,建立后,都可否 直接跟接线员建立持久连接,有信息的前一天客服想土办法通知接线员,之后 接线员在统一转交给客户。