Polling 、Long Polling 和 WebSocket

最近在学习研究WebSocket,了解到Polling 和Long Polling,翻阅了一些博文,根据自己的理解,做个学习笔记

Polling (轮询):

这种方式就是客户端定时向服务器发送http的Get请求,服务器收到请求后,就将最新的数据返回给客户端,客户端再进行显示,如此反复这一过程;

这种方式虽然可以满足需求,但是也存在些问题;比如客户端每一分钟向服务器发送http的get请求,而在这一分钟里,服务器并没有数据更新,就会将老的数据返回给客户端显示,

这样不仅浪费网络宽带而且也浪费了cpu的利用率;就想着说那可以拉长请求的周期啊,于是就有了下面的Long Polling(长轮询)。

Long Polling(长轮询):

Long Polling(长轮询)是对Polling(轮询)的一种改进;客户端向服务器发送http的get请求,如果服务器有新的数据更新,则直接将新数据返回给客户端显示;如果没有,则将这个请求保持住,直到服务器有新的数据更新,

再将新的数据返回给客户端显示;当然这个请求是有时效的,如果服务器很久都没有数据更新,则这个get请求会超时,客户端收到超时信息时,则再发起一个get请求;如此重复这一过程。

但是这种方式同样存在一些问题,如果数据更新过快,而数据的返回得等客户端发来一个get请求,才能将该新数据返回给客户端;客户端显示最新数据的最快时间为2×RTT(往返时间),在网络拥塞的情况在,用户是没法接受的;

比如,一个请求来回要4秒,用户在10:10秒发出请求,在10:14看到服务器返回的数据,而服务器在10:13有新的数据更新,则只能等上一个请求数据回去后,在10:14才能再次发出get请求,在10:18秒才能在客户端接受到服务器在10:13更新的数据,也就是在网络正常的情况下,这个数据延迟了5秒,客户端才能看到,数据没法实时更新,用户肯定也接受不了。

另外,由于http数据包的头部数据量往往很大(通常有 400多个字节),但是真正被服务器需要的数据却很少(有时只有10个字节左右),这样的数据包在网络上周期性的传输,难免对网络带宽是一种浪费。于是就有了下面的WebSocket。

WebSocket:

WebSocket是一种双向通信协议,而且协议的头部又不那么庞大;服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话;WebSocket需要通过握手连接

(你先告诉服务器你要给服务器发东西(SYN),服务器应答你并告诉你它也要给你发东西(SYN、ACK),然后你应答服务器(ACK),总共来回了3次,称为3次握手。)

,类 似于TCP它也需要客户端和服务器端进行握手连接,连接成功后才能相互通信。握手连接成功后,服务器就可以主动向客户端推送最新的数据,客户端也可以主动向服务器发送请求,这样就可以实现实时的数据了。

在此WebSocket 协议中,为我们实现即时服务带来了两大好处:
1. Header
互相沟通的Header是很小的-大概只有 2 Bytes
2. Server Push
服务器的推送,服务器不再被动的接收到浏览器的请求之后才返回数据,而是在有新数据时就主动推送给浏览器。
创建对象:
var ws = new WebSocket("ws://echo.websocket.org",[name]);
第一个参数为WebSocket服务器的地址,使用ws://开头,另外安全的WebSocket协议使用wss://开头,name为发起握手的协议名称,为可选择项。
连接建立时触发:
ws.onopen = (function(){...})();
客户端接收服务端数据时触发:
ws.onmessage = (function(evt){...})();
通信发生错误时触发:
ws.onerror = (function(){...})();
连接关闭时触发:
ws.onclose = (function(){...})();
如有不对的地方,望大神指出,感谢!
参考博文:
https://www.cnblogs.com/mazg/p/5467960.html

转载于:https://www.cnblogs.com/qiufang/p/8617656.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

惯性张量的推理_选择合适的intel工作站处理器进行张量流推理和开发

惯性张量的推理With the increasing number of data scientists using TensorFlow, it might be a good time to discuss which workstation processor to choose from Intel’s lineup. You have several options to choose from:随着使用TensorFlow的数据科学家数量的增加&am…

MongoDB数据库查询性能提高40倍

MongoDB数据库查询性能提高40倍 大家在使用 MongoDB 的时候有没有碰到过性能问题呢?下面这篇文章主要给大家分享了MongoDB数据库查询性能提高40倍的经历,需要的朋友可以参考借鉴,下面来一起看看吧。 前言 数据库性能对软件整体性能有着至关重…

通过Ajax方式上传文件(input file),使用FormData进行Ajax请求

<script type"text/jscript">$(function () {$("#btn_uploadimg").click(function () {var fileObj document.getElementById("FileUpload").files[0]; // js 获取文件对象if (typeof (fileObj) "undefined" || fileObj.size …

并发插入数据库会导致失败吗_会导致业务失败的数据分析方法

并发插入数据库会导致失败吗The true value of data depends on business insight.Data analysis is one of the most powerful resources an enterprise has. However, if the tools and processes used are not friendly and widely available to the business users who nee…

434. 字符串中的单词数

434. 字符串中的单词数 统计字符串中的单词个数&#xff0c;这里的单词指的是连续的不是空格的字符。 请注意&#xff0c;你可以假定字符串里不包括任何不可打印的字符。 示例: 输入: “Hello, my name is John” 输出: 5 解释: 这里的单词是指连续的不是空格的字符&#x…

zooland 新开源的RPC项目,希望大家在开发的微服务的时候多一种选择,让微服务开发简单,并且容易上手。...

zooland 我叫它动物园地&#xff0c;一个构思很长时间的一个项目。起初只是觉得各种通信框架都封装的很好了&#xff0c;但是就是差些兼容&#xff0c;防错&#xff0c;高可用。同时在使用上&#xff0c;不希望有多余的代码&#xff0c;像普通接口一样使用就可以了。 基于这些想…

187. 重复的DNA序列

187. 重复的DNA序列 所有 DNA 都由一系列缩写为 ‘A’&#xff0c;‘C’&#xff0c;‘G’ 和 ‘T’ 的核苷酸组成&#xff0c;例如&#xff1a;“ACGAATTCCG”。在研究 DNA 时&#xff0c;识别 DNA 中的重复序列有时会对研究非常有帮助。 编写一个函数来找出所有目标子串&am…

牛客网_Go语言相关练习_选择题(2)

注&#xff1a;题目来源均出自牛客网。 一、选择题 Map&#xff08;集合&#xff09;属于Go的内置类型&#xff0c;不需要引入其它库即可使用。 Go-Map_菜鸟教程 在函数声明中&#xff0c;返回的参数要么都有变量名&#xff0c;要么都没有。 C选项函数声明语法有错误&#xff0…

机器学习模型部署_9月版部署机器学习模型

机器学习模型部署每月版 (MONTHLY EDITION) Often, the last step of a Data Science task is deployment. Let’s say you’re working at a big corporation. You’re building a project for a customer of the corporation and you’ve created a model that performs well…

352. 将数据流变为多个不相交区间

352. 将数据流变为多个不相交区间 给你一个由非负整数 a1, a2, …, an 组成的数据流输入&#xff0c;请你将到目前为止看到的数字总结为不相交的区间列表。 实现 SummaryRanges 类&#xff1a; SummaryRanges() 使用一个空数据流初始化对象。void addNum(int val) 向数据流中…

Java常用的八种排序算法与代码实现

排序问题一直是程序员工作与面试的重点&#xff0c;今天特意整理研究下与大家共勉&#xff01;这里列出8种常见的经典排序&#xff0c;基本涵盖了所有的排序算法。 1.直接插入排序 我们经常会到这样一类排序问题&#xff1a;把新的数据插入到已经排好的数据列中。将第一个数和第…

熊猫ai智能机器人量化_机器学习中的熊猫是什么

熊猫ai智能机器人量化Machine learning is a complex discipline. The implementation of machine learning models is now far much easier than it used to be, this is as a result of Machine learning frameworks such as pandas. Wait!! isnt panda an animal? As I rec…

441. 排列硬币

441. 排列硬币 你总共有 n 枚硬币&#xff0c;并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯&#xff0c;其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。 给你一个数字 n &#xff0c;计算并返回可形成 完整阶梯行 的总行数。 示例 1&#xff1a;…

调用百度 Echarts 显示重庆市地图

因为 Echarts 官方不再提供地图数据的下载&#xff0c;在这里保存一份&#xff0c;供日后使用&#xff0c;重庆地图数据的 JSON 文件在 CSDN 上下载。 <!DOCTYPE html> <html style"height: 100%"><head><meta charset"utf-8"><…

JEESZ-SSO解决方案

2019独角兽企业重金招聘Python工程师标准>>> 第一节&#xff1a;单点登录简介 第一步&#xff1a;了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS)&#xff0c;并且只有一个登录入口. SSO的体系中有下面三种角色: 1) User(多个) 2) Web应用(多个) 3) …

女朋友天天气我怎么办_关于我的天气很奇怪

女朋友天天气我怎么办带有扭曲的天气应用 (A Weather App with a Twist) Is My Weather Weird?™ is a weather app with a twist — it offers a simple answer to a common question we’ve all asked. To do this we look at how often weather like today’s used to happ…

Java中length,length(),size()的区别

&#xff08;一&#xff09;区别&#xff1a; ①length&#xff1a;用于算出数组的长度。 ②length&#xff08;&#xff09;&#xff1a;用于找出字符串的长度。 ③size&#xff08;&#xff09;&#xff1a;用于找出泛型集合的元素个数。转载于:https://www.cnblogs.com/not-…

5895. 获取单值网格的最小操作数

5895. 获取单值网格的最小操作数 给你一支股票价格的数据流。数据流中每一条记录包含一个 时间戳 和该时间点股票对应的 价格 。 不巧的是&#xff0c;由于股票市场内在的波动性&#xff0c;股票价格记录可能不是按时间顺序到来的。某些情况下&#xff0c;有的记录可能是错的…

为什么要用Redis

最近阅读了《Redis开发与运维》&#xff0c;非常不错。这里对书中的知识整理一下&#xff0c;方便自己回顾一下Redis的整个体系&#xff0c;来对相关知识点查漏补缺。我按照五点把书中的内容进行一下整理&#xff1a;为什么要选择Redis&#xff1a;介绍Redis的使用场景与使用Re…

第一次马拉松_成为数据科学家是一场马拉松而不是短跑

第一次马拉松Since Data Science became the “Sexiest Job of the 21st Century” the interest in the field has grown tremendously. With it so have the courses available to gain the necessary knowledge. As great as this is, the downside is a field marketed as …