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 教程相关推荐

  1. react入门(1)之阮一峰react教程

    阮一峰老师的github地址:React Demos React 入门实例教程 1.HTML模板 <!DOCTYPE html> <html><head>// re ...

  2. 阮一峰 Webpack 教程

    写在开头: 此 Webpack 教程是阮老师在 Webpack 1.x 的版本上做的.现在 Webpack 的版本已经改动较大,建议有基础的同学,就直接上官网看最新的就好了.这个教程可以用来了解下 W ...

  3. 拜读阮一峰JavaScript教程笔记

    读了不知道几遍,每次都没总结合做笔记,所以很多内容都记不住,如果平时没应用到实际中,那知识跟像过眼云烟,于是还是谢谢博客记记笔记,好好学习天天向上. 原教程链接: http://javascript. ...

  4. 「前端基础」阮一峰JavaScript教程笔记(一)

    文章目录 入门篇 6 条件语句 数据类型 概述 null, undefined 和布尔值 1. null 和 undefined 2. 布尔值 数值 1 概述 2 数值的表示法 3 数值的进制 4 特 ...

  5. 「前端基础」阮一峰JavaScript教程笔记(二)

    文章目录 语法专题 数据类型的转换 1 概述 2 强制转换 3 自动转换 错误处理机制 1 Error 实例对象 2 原生错误类型 2.1 SyntaxError 对象 2.2 ReferenceEr ...

  6. python作者 es6_ES6 全套教程 ECMAScript6 (原著:阮一峰)(1)

    ES6 前言 ES6是JS(JavaScript)的一个版本标准, 前端教程共编系统 收录此教程, 遵从"保持署名-非商用"创意共享4.0许可证, 借本站教程共编系统接受广大工程师 ...

  7. 阮一峰:jQuery官方基础教程笔记

    原文地址:http://www.jobbole.com/entry.php/1151 jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQu ...

  8. 阮一峰 React Router 教程

    阮一峰 React Router 教程 本文介绍 React 体系的一个重要部分:路由库 React-Router.它是官方维护的,事实上也是唯一可选的路由库.它通过管理 URL,实现组件的切换和状态 ...

  9. 阮一峰 react 系列教程

    阮一峰 react 系列教程 阮一峰 react 系列教程 ES6 语法:教程 Babel:教程 React:教程,示例库 Webpack:教程 React 项目脚手架:代码库 Flex 布局:教程, ...

  10. Javascript 基础教程 阮一峰

    Javascript 基础教程 阮一峰 2021-11-16 阮一峰推荐的入门教程,重在查漏补缺 https://wangdoc.com/javascript/index.html 第一章 入门 JS ...

最新文章

  1. 前后端分离的探索(三)
  2. iOS开发-登录界面开发(6)Toast-Swift的使用-Swfit4.1_Xcode9.3.1
  3. 【linux 06】 linux中的用户权限、文件权限与目录权限
  4. leetcode 1306. Jump Game III | 1306. 跳跃游戏 III(BFS)
  5. 模拟集成电路的经典教材
  6. ae saber插件_【AE插件】 用于做动画制作/设计的五个免费插件 非常好用
  7. 实数域上的压缩映射不动点原理
  8. Keepalived高可用(原理、安装、启动、单实例配置、双实例双主配置实战篇)
  9. 计算机学院毕设中期检查报告,毕业设计中期检查报告
  10. 桌面图标文字有蓝底怎么办
  11. 俄亥俄大学计算机科学专业,美国计算机科学专业最新排名!
  12. Linux命令详解(2) – mv
  13. Nginx的简单使用,配置多前端,多端口【微信小程序+前后端分离跨域解决】
  14. accept函数(TCP)
  15. 日期问题合集(时令、时区)
  16. 杰理之二代手表原理图【篇】
  17. 非计算机专业计算机教学考试,非计算机专业计算机基础课教学改革的探索和实践...
  18. 对比欧氏距离与余弦相似度
  19. 专业的亚马逊运营工具有哪些?都具备哪些功能?
  20. MORRORART音箱对比当贝音乐哪个好用?

热门文章

  1. 3-unit2 高级网络配置
  2. Linux终端、控制台复制粘贴
  3. 十个JDBC的最佳实践
  4. ios中webview的高级用法(二)
  5. android 判断服务是否运行
  6. 如果有一天,程序员不想做程序了,首选要做什么呢?
  7. 使用MEMCACHED的思考
  8. Springboot druid 监控sql语句
  9. 如何设计一个完美的权限管理模块
  10. HDU 1257 最少拦截系统 简单DP