阮一峰:WebSocket 教程
https://zhuanlan.zhihu.com/p/27604269
节选:
WebSocket 是一种网络通信协议,很多高级功能都需要它。
本文介绍 WebSocket 协议的使用方法。
一、为什么需要 WebSocket?
初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?
答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。
举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。
这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询":每隔一段时候,就发出一个询问,了解服务器有没有新的信息。最典型的场景就是聊天室。
轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。因此,工程师们一直在思考,有没有更好的方法。WebSocket 就是这样发明的。
二、简介
WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。
它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
其他特点包括:
(1)建立在 TCP 协议之上,服务器端的实现比较容易。
(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
(3)数据格式比较轻量,性能开销小,通信高效。
(4)可以发送文本,也可以发送二进制数据。
(5)没有同源限制,客户端可以与任意服务器通信。
(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。
阮一峰:WebSocket 教程相关推荐
- react入门(1)之阮一峰react教程
阮一峰老师的github地址:React Demos React 入门实例教程 1.HTML模板 <!DOCTYPE html> <html><head>// re ...
- 阮一峰 Webpack 教程
写在开头: 此 Webpack 教程是阮老师在 Webpack 1.x 的版本上做的.现在 Webpack 的版本已经改动较大,建议有基础的同学,就直接上官网看最新的就好了.这个教程可以用来了解下 W ...
- 拜读阮一峰JavaScript教程笔记
读了不知道几遍,每次都没总结合做笔记,所以很多内容都记不住,如果平时没应用到实际中,那知识跟像过眼云烟,于是还是谢谢博客记记笔记,好好学习天天向上. 原教程链接: http://javascript. ...
- 「前端基础」阮一峰JavaScript教程笔记(一)
文章目录 入门篇 6 条件语句 数据类型 概述 null, undefined 和布尔值 1. null 和 undefined 2. 布尔值 数值 1 概述 2 数值的表示法 3 数值的进制 4 特 ...
- 「前端基础」阮一峰JavaScript教程笔记(二)
文章目录 语法专题 数据类型的转换 1 概述 2 强制转换 3 自动转换 错误处理机制 1 Error 实例对象 2 原生错误类型 2.1 SyntaxError 对象 2.2 ReferenceEr ...
- python作者 es6_ES6 全套教程 ECMAScript6 (原著:阮一峰)(1)
ES6 前言 ES6是JS(JavaScript)的一个版本标准, 前端教程共编系统 收录此教程, 遵从"保持署名-非商用"创意共享4.0许可证, 借本站教程共编系统接受广大工程师 ...
- 阮一峰:jQuery官方基础教程笔记
原文地址:http://www.jobbole.com/entry.php/1151 jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQu ...
- 阮一峰 React Router 教程
阮一峰 React Router 教程 本文介绍 React 体系的一个重要部分:路由库 React-Router.它是官方维护的,事实上也是唯一可选的路由库.它通过管理 URL,实现组件的切换和状态 ...
- 阮一峰 react 系列教程
阮一峰 react 系列教程 阮一峰 react 系列教程 ES6 语法:教程 Babel:教程 React:教程,示例库 Webpack:教程 React 项目脚手架:代码库 Flex 布局:教程, ...
- Javascript 基础教程 阮一峰
Javascript 基础教程 阮一峰 2021-11-16 阮一峰推荐的入门教程,重在查漏补缺 https://wangdoc.com/javascript/index.html 第一章 入门 JS ...
最新文章
- 前后端分离的探索(三)
- iOS开发-登录界面开发(6)Toast-Swift的使用-Swfit4.1_Xcode9.3.1
- 【linux 06】 linux中的用户权限、文件权限与目录权限
- leetcode 1306. Jump Game III | 1306. 跳跃游戏 III(BFS)
- 模拟集成电路的经典教材
- ae saber插件_【AE插件】 用于做动画制作/设计的五个免费插件 非常好用
- 实数域上的压缩映射不动点原理
- Keepalived高可用(原理、安装、启动、单实例配置、双实例双主配置实战篇)
- 计算机学院毕设中期检查报告,毕业设计中期检查报告
- 桌面图标文字有蓝底怎么办
- 俄亥俄大学计算机科学专业,美国计算机科学专业最新排名!
- Linux命令详解(2) – mv
- Nginx的简单使用,配置多前端,多端口【微信小程序+前后端分离跨域解决】
- accept函数(TCP)
- 日期问题合集(时令、时区)
- 杰理之二代手表原理图【篇】
- 非计算机专业计算机教学考试,非计算机专业计算机基础课教学改革的探索和实践...
- 对比欧氏距离与余弦相似度
- 专业的亚马逊运营工具有哪些?都具备哪些功能?
- MORRORART音箱对比当贝音乐哪个好用?