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.pswp.cn/news/390009.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390009.shtml
英文地址,請注明出處:http://en.pswp.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 …