短轮询:客户端发起请求,服务器无论有无消息都返回信息,结束http连接。然后继续发起请求。
长轮询:客户端发起请求,建立连接,直到服务端返回消息response,结束http连接。然后继续发起请求,重复刚才的动作。
这种做法缺点在于:
短轮询要求服务器有很快的处理速度和资源。长轮询则要求服务器有很高的并发,同时接收多个连接,服务多个连接。
 
websocket区别于短、长轮询:它只建立一次http连接,建立连接后,服务端可主动向客户端发送消息,而不是客户端发送请求后,服务端才返回消息。
 
http 的长连接:通过Connection:keep-alive来建立连接,一次tcp连接完成多次http请求,请求仍需要header,kepp-alive的保持时长在服务端设置。
 
websocket区别于长连接:一次tcp连接后,双方均可发送数据,不需要header,可随时结束连接。
 
websocket的工作原理:
客户端发送一次特殊的http请求,在经过 tcp/ip 传输层协议(三次握手)后,应用层http协议升级为websocket协议,进行实际的数据传输。
这个特殊的http请求的头部内容包括Connection:Upgrade Upgrade:websocket,切换到websocket协议(响应状态码 101 表示服务器已经理解了客户端的请求,在发送完这个响应后,服务器将会切换到在Upgrade请求头中定义的那些协议)。websocket使用此机制以兼容的方式与http服务器建立连接。
WebSocket 是一种在单个TCP连接上进行全双工通信的协议(基于 TCP 的协议)。
Websocket 通过HTTP/1.1 协议的101状态码进行握手(与 HTTP 的唯一关系就是它的握手请求可以作为一个升级请求(Upgrade request)经由 HTTP 服务器解释)。
 
websocket的通讯协议中:客户端发出的数据帧需要进行掩码处理。服务器发送的数据帧则未经过掩码处理。所以如果服务器收到客户端发送的未经掩码处理的数据包,则会自动断开连接;反之,如果客户端收到了服务端发送的经过掩码处理的数据包,也会自动断开连接。

我理解的websocket的更多相关文章

  1. WebSocket学习总结

    一 .websocket 已解决      但是websocket延伸出来的网络编程还有好多知识点没有清理.主要的流程和实现方式已经大概了解清楚,下面从学习的进度思路来一点点复习.        网络 ...

  2. 网络协议中HTTP,TCP,UDP,Socket,WebSocket的优缺点/区别

    先说一下网络的层级:由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层 1.TCP和UDP TCP:是面向连接的一种传输控制协议.属于传输层协议.TCP连接之后,客户端和服务器可 ...

  3. websocket是什么

    websocket是什么? 这是知乎上面一个作者写的一篇风趣幽默又容易理解关于 websocket 的文章. 提供一下连接地址:https://www.zhihu.com/question/20215 ...

  4. WebSocket抓包分析

    转载自:https://www.cnblogs.com/songwenjie/p/8575579.html Chrome控制台 (1)F12进入控制台,点击Network,选中ws栏,注意选中Filt ...

  5. Unity3d 下websocket的使用

    今天介绍一下如何在Unity3D下使用WebSocket. 首先介绍一下什么是websocket,以及与socket,和http的区别与联系,然后介绍一下websocket的一些开源的项目. WebS ...

  6. netty系列之:使用netty搭建websocket服务器

    目录 简介 netty中的websocket websocket的版本 FrameDecoder和FrameEncoder WebSocketServerHandshaker WebSocketFra ...

  7. 详细讲解nodejs中使用socket的私聊的方式

    详细讲解nodejs中使用socket的私聊的方式 在上一次我使用nodejs+express+socketio+mysql搭建聊天室,这基本上就是从socket.io的官网上的一份教程式复制学习,然 ...

  8. 原来你是这样的Websocket--抓包分析

    之前自己一个人负责完成了公司的消息推送服务,和移动端配合完成了扫码登录.订单消息推送.活动消息广播等功能.为了加深自己对Websocket协议的理解,自己通过进行抓包的方式学习了一番.现在分享出来,希 ...

  9. 详解nodejs中使用socket的私聊和公聊的办法

    详解nodejs中使用socket的私聊和公聊的办法 nodejs的应用中,关于socket应该是比较出彩的了,socket.io在github上有几万人的star,它的成功应该是不输于express ...

随机推荐

  1. 解决微信小程序wepy真机预览跟本地表现不一样,数据变化了视图没变化

    当时搜了很多相关问题都没找到相似的 只看到有这个相似的描述wepy在onLoad里修改data-object的值页面不渲染 ,通过setData解决的. 但是这个还不是根本的解决办法,有些地方用set ...

  2. Collection和Map类图预览与比较

    类图 HashSet和TreeSet的区别:https://www.cnblogs.com/bobi1234/p/10759769.html HashSet和LinkedHashSet区别:https ...

  3. word20170101厨房家电kitchen appliances

    1. Microwave Ovens 2. Electric Kettles 3. Coffeemakers 4. Espresso Machines 5. Toasters 6. Sandwich ...

  4. JAVA使用HttpClient时报错:Algorithm constraints check failed on signature algorithm: MD5withRSA

    今天使用httpClient.executeMethod时抛出异常:java.security.cert.CertPathValidatorException: Algorithm constrain ...

  5. 002 requests的使用方法以及xpath和beautifulsoup4提取数据

    1.直接使用url,没用headers的请求 import requests url = 'http://www.baidu.com' # requests请求用get方法 response = re ...

  6. js特殊符号(转)

    HTML有许多特殊的字符,您对此有多少了解?平时在WEB制作中,您又有用到多少?或者说你在平时使用之时,是否也会碰到,有许多特殊字符要如何打印出来?比如说“笑脸”,比如说“版权号”.要是你用时忘记了这 ...

  7. linux 笔记整理

    1.常使用的进程管理命令 ps   显示显示主动的进程     .  top 显示所用运行的进程   .  关闭进程   kill [pro Number ]  .  关闭名为H的所有进程 killa ...

  8. 在servlet中使用spring注解

    @Autowired IAgreementPayService agreementPayService; /** * 支付参数 */ @Value("B{agreementPay.publi ...

  9. 抓取某网站信息时遇到的问题及解决 The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set

    var response = httpClient.SendAsync(requestMessage).Result; content = response.Content.ReadAsStringA ...

  10. pwn学习(1)

    0x00 简介 入职之后,公司发布任务主搞pwn和re方向,re之前还有一定的了解,pwn我可真是个弟弟,百度了一番找到了蒸米大佬的帖子,现在开始学习. 0x01 保护方式 NX (DEP):堆栈不可 ...