websocket个人理解总结

WebSocket

  • 释义:聊天室、服务、套接字、协议
  • 引用:https://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/index.html

    作为下一代的 Web 标准,HTML5 拥有许多引人注目的新特性,如 Canvas、本地存储、多媒体编程接口、WebSocket 等等。这其中有“Web 的 TCP ”之称的 WebSocket 格外吸引开发人员的注意。WebSocket 的出现使得浏览器提供对 Socket 的支持成为可能,从而在浏览器和服务器之间提供了一个基于 TCP 连接的双向通道。Web 开发人员可以非常方便地使用websocket构建实时web应用,开发人员的手中从此又多了一柄神兵利器。

  • webSocket协议是一个持久化协议,相对http这种非持久的协议来说。

    简单说:http1.0中,一个request对应一个response,当次访问结束

    http1.1中,多个request对应多个response,采用keep-alive;

    总归:一个req只能对应一个res,并且这个res不能主动发送给客户端,它是被动的。嗯,很被动。并且,http是无状态协议,一旦请求结束,它就会把关于请求的一切都给忘了,然后等你下次再请求的时候,还得重新认识它一下,重新发送请求,它再重新给你计算一次结果并返回给你。

  • 实时web 应用

    普通web请求通讯过程

1.问题:比如说在线游戏、在线证券、设备监控、新闻在线播报、RSS 订阅推送等等,当客户端浏览器准备呈现这些信息的时候,这些信息在服务器端可能已经过时了。

2.[以前的解决方案][3]

1)ajax轮询:前端设置一个定时器,每隔一段时间,给服务器发送一个请求,然后服务器给你返回,不停的问,服务器不停的回,最后的结果,服务器弱点的话,就是崩了!

2)long poll (长轮询):这个也是同一个机制,不过采取的是阻塞模型。客户端到服务器家借钱,服务器没有钱,说是去打工挣钱了,等挣到钱就给他,但是客户端不走,等到服务器把钱拿回来了再走,或者客户端等的时间太长了,已经超过它设定的等待时间,它就会结束这次借钱任务,然后过些时候,再过来看看,服务器是不是已经有钱了。如果说是,客户端不停的和服务器要钱,来一趟,拿走,再来一趟,拿走,那么这种方法和ajax轮询没有区别。术语:当服务器端没有数据更新的时候,连接会保持一段时间周期直到数据或状态改变或者时间过期,通过这种机制来减少无效的客户端和服务器间的交互

  • 简单的总结:(若错误请指出)

    1.性能高:为什么性能高呢,因为客户端只要一次请求,连接上了,就不再请求,等待服务器主动给客户端数据:[情景如下][3]:

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

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

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

    服务端:ok,有的时候会告诉你的。

    服务端:有更新啦

    服务端:又有更新啦

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

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

    那么为什么他会解决服务器上消耗资源的问题呢?其实我们所用的程序是要经过两层代理的,即HTTP协议在Nginx等服务器的解析下,然后再传送给相应的Handler(PHP等)来处理。简单地说,我们有一个非常快速的接线员(Nginx),他负责把问题转交给相应的客服(Handler)。本身接线员基本上速度是足够的,但是每次都卡在客服(Handler)了,老有客服处理速度太慢。,导致客服不够。Websocket就解决了这样一个难题,建立后,可以直接跟接线员建立持久连接,有信息的时候客服想办法通知接线员,然后接线员在统一转交给客户。这样就可以解决客服处理速度过慢的问题了

    [3]:https://www.zhihu.com/question/20215561

    2.双向:服务器也能主动发送数据给客户端了,不再是客户端踹一脚应一声的状态

    3.兼容性:能兼容到ie10+,chrome4+,firefox4+,opera10+,Safari5+

    4.能跨域(socket.io)


socket.io
时间: 2024-10-11 13:03:35

websocket个人理解总结的相关文章

websocket的理解及实例应用

websocket协议是HTML5提出的一个新的规范,主要用于实现服务器及时推送信息给客户端的功能. websocket实现是基于HTTP协议的部分握手功能,但是websocket仅仅握手一次即可进行数据传输(HTTP连接需要3次握手),之后的数据传输遵守TCP协议进行数据包的发送了(HTTP也是基于TCP协议). 本人比较懒的写东西,所以.....以下博文是介绍的比较详细的: http://www.cnblogs.com/lizhenghn/p/5155933.html 以下为自己实现的例子:

WebSocket协议理解

WebSocket 的诞生 做客户端开发时,接触最多的应用层网络协议,就是 HTTP 协议,而今天介绍的 WebSocket,下层和 HTTP 一样也是基于 TCP 协议,这是一种轻量级网络通信协议,也属于应用层协议. WebSocket 与 HTTP/2 一样,其实都是为了解决 HTTP/1.1 的一些缺陷而诞生的,而 WebSocket 针对的就是「请求-应答」这种"半双工"的模式的通信缺陷. 「请求-应答」是"半双工"的通信模式,数据的传输必须经过一次请求应答

Cowboy.WebSockets 开源 WebSocket 网络库

Cowboy.WebSockets 是一个托管在 GitHub 上的基于 .NET/C# 实现的开源 WebSocket 网络库,其完整的实现了 RFC 6455 (The WebSocket Protocol) 协议标准,并部分实现了 RFC 7692 (Compression Extensions for WebSocket) 协议标准. WebSocket 可理解为建立在 TCP 连接通道上的更进一步的握手,并确定了消息封装格式. 通过定义控制帧 (Control Frame) 和数据帧

html5-websocket初探

HTML5规范在传统的web交互基础上为我们带来了众多的新特性,随着web技术被广泛用于web APP的开发,这些新特性得以推广和使用,而websocket作为一种新的web通信技术具有巨大意义. 什么是socket?什么是websocket?两者有什么区别?websocket是仅仅将socket的概念移植到浏览器中的实现吗? 我们知道,在网络中的两个应用程序(进程)需要全双工相互通信(全双工即双方可同时向对方发送消息),需要用到的就是socket,它能够提供端对端通信,对于程序员来讲,他只需要

Node.js的学习路线

http://www.admin10000.com/document/4624.html 顺便关注一下博客:http://blog.fens.me/series-nodejs/ php socket框架:http://www.workerman.net/ websocket的理解:http://www.ibm.com/developerworks/cn/java/j-lo-WebSocket/

webmagic采集CSDN的Java_WebDevelop页面

项目中使用到了webmagic,采集论坛一类的页面时需要一些特殊的配置.在此记录一下 先来看看我要采集的页面 点击第2页可以看到它的url是http://bbs.csdn.net/forums/Java_WebDevelop?page=2 点击尾页可以看到它的url是http://bbs.csdn.net/forums/Java_WebDevelop?page=758 也就是说我们需要采集的范围是从2到758页 这样我们就可以通过自己拼接一个url来模拟所有 的连接了代码如下: <span st

Java仿微信全栈 高性能后台+移动客户端

第1章 课程介绍课程介绍 第2章 netty介绍与相关基础知识初识netty,学习阻塞与非阻塞,同步与异步,理解BIO.NIO.AIO以及netty的线程模型 第3章 使用netty编写第一个hello netty 服务器从零开始使用netty编写服务器,在网页访问后返回hello netty,主要对服务器启动类,channel初始化器以及助手类讲解,最后会对channel的生命周期进行讲解 第4章 使用netty构建websocket服务器理解实时通信,使用netty的websocket编写服

PythonFlask构建微信小程序订餐系统

第1章 课程介绍课程介绍 第2章 netty介绍与相关基础知识初识netty,学习阻塞与非阻塞,同步与异步,理解BIO.NIO.AIO以及netty的线程模型 第3章 使用netty编写第一个hello netty 服务器从零开始使用netty编写服务器,在网页访问后返回hello netty,主要对服务器启动类,channel初始化器以及助手类讲解,最后会对channel的生命周期进行讲解 第4章 使用netty构建websocket服务器理解实时通信,使用netty的websocket编写服

Netty Springboot仿微信聊天全栈实战 从0开发到上线部署视频教程

下载地址:百度网盘下载 第1章 课程介绍 本章首先让大家彻底明白通过本课程的学习具体收获有哪些?课程内容具体安排与学习建议,然后为大家简单介绍课程涉及到的技术栈等. 1-1 课程介绍第2章 netty介绍与相关基础知识 初识netty,学习阻塞与非阻塞,同步与异步,理解BIO.NIO.AIO以及netty的线程模型 2-1 初始netty2-2 阻塞和非阻塞.同步和异步的概念2-3 BIO讲解2-4 NIO讲解2-5 BIO NIO AIO的区别与理解2-6 再看netty2-7 netty的三