websocket -- 备面试装逼使用
来源:互联网 发布:windows 查看端口 编辑:程序博客网 时间:2024/06/11 00:27
1.WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。建立在传输层(tcp之上)
2.
WebSocket protocol 。
现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的有用数据可能只是一个很小的值,这样会占用很多的带宽。
(Ajax技术可达到全双工通信,却需要客户端发起请求,而WebSocket服务器和客户端可以彼此相互推送信息;XHR技术受到域的限制,而WebSocket允许跨域通信;long poll 其实原理跟 ajax轮询 差不多,都是采用轮询的方式,不过采取的是阻塞模型,也就是说,客户端发起连接后,如果没消息,就一直不返回Response给客户端。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。)ajax轮询 需要服务器有很快的处理速度和资源。(速度)long poll 需要有很高的并发,也就是说同时接待客户的能力。(场地大小)由于HTTP是非状态性的,每次都要重新传输identity info(鉴别信息),来告诉服务端你是谁。)
在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在此WebSocket 协议中,为我们实现即时服务带来了两大好处:
1. Header
互相沟通的Header是很小的-大概只有 2 Bytes
2. Server Push
服务器的推送,服务器不再被动的接收到浏览器的request之后才返回数据,而是在有新数据时就主动推送给浏览器。
3.
这里简单说明一下WebSocket握手的过程。
当Web应用程序调用new WebSocket(url)接口时,Browser就开始了与地址为url的WebServer建立握手连接的过程。
1. Browser与WebSocket服务器通过TCP三次握手建立连接,如果这个建立连接失败,那么后面的过程就不会执行,Web应用程序将收到错误消息通知。
2. 在TCP建立连接成功后,Browser/UA通过http协议传送WebSocket支持的版本号,协议的字版本号,原始地址,主机地址等等一些列字段给服务器端。
例如:
- GET /chat HTTP/1.1
- Host: server.example.com
- Upgrade: websocket
- Connection: Upgrade
- Sec-WebSocket-Key:dGhlIHNhbXBsZSBub25jZQ==
- Origin: http://example.com
- Sec-WebSocket-Protocol: chat,superchat
- Sec-WebSocket-Version: 13
3. WebSocket服务器收到Browser/UA发送来的握手请求后,如果数据包数据和格式正确,客户端和服务器端的协议版本号匹配等等,就接受本次握手连接,并给出相应的数据回复,同样回复的数据包也是采用http协议传输。
- HTTP/1.1 101 Switching Protocols
- Upgrade: websocket
- Connection: Upgrade
- Sec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
- Sec-WebSocket-Protocol: chat
2 0
- websocket -- 备面试装逼使用
- 面试装13大法合集
- 牛逼的面试题
- WebSocket使用
- webSocket使用
- websocket使用
- 使用WebSocket
- 【WebSocket】手把手教会使用WebSocket
- WebSocket使用之什么是WebSocket?
- php牛逼的面试题分享
- moblin开发环境试装记事
- Windows VPC RC试装server2008
- 使用spring-websocket包搭建websocket服务
- WebSocket(一):Java Web项目使用Websocket
- WebSocket WebSocket的简单用法 WebSocket的使用
- WebSocket使用例子
- WebSocket简单使用
- Golang使用websocket
- Oracle Grouping、Rollup 的简单用法
- 图的遍历(DFS&BFS)
- Sci假论文爬虫
- crontab管理linux定时任务
- Oracle数据库学习11之存储结构
- websocket -- 备面试装逼使用
- 【Dubbo二】Zookeeper安装与配置
- C# File.Copy 工作记录
- (POJ1129)Channel Allocation <涂色问题问最少颜色数 剪枝搜索 > || <四色定律>
- Oracle数据库学习12之函数
- spring源码分析之MVC简介
- 最小割基本模型及解决方案
- iOS 很酷的动画效果
- 4518: [Sdoi2016]征途