HTML5(十一)——WebSocket 基础教程
一、为什么要学 WebSocket?
websocket 是 HTML5 提供的一种长链接双向通讯协议,使得客户端和服务器之间的数据交换更简单,允许服务端主动向客户端推送数据,并且客户端与服务端只需连接一次,就可以保持长久连接,并进行数据通信。
websocket 与 http 区别:
- http 链接分为长链接、短链接,短链接是发送一个请求,返回一个响应,长链接是在一定周期内保持链接。但是 websocket 只需连接一次就可以保持长链接,不需要的时候可以手动断开。
- http 通信中,客户端是主动的,服务端是被动的。但是 websocket,服务端可以主动向客户端推送数据。
- http 通过轮询建立的长链接,多次建立 request / response 会产生冗余的头部信息。
ajax 轮询与 websocket 通信原理如图:
websocket 就是为了解决客户端发起多个 http 请求到服务器资源,浏览器必须要经过长时间的,轮询问题而生的,实现多路复用。它最大特点就是服务器可以主动向客户端推送信息。
二、WebSocket 对象
2.1、创建对象:
let ws = new WebSocket( url , [ protocol ] )
url:指定连接的后台服务地址。
protocol:指定可接受的子协议,是可选参数。
2.2、对象属性
readyState:表示连接状态,是一个只读属性。
使用语法:ws.readyState
返回的值有4个,分别表示的意义:
- 0 - 未建立连接
- 1 - 已建立连接,可正常通信
- 2 - 连接正在进行关闭
- 3 - 连接已经关闭或断开,无法通信
bufferedAmount:已被放入等待传输队列,但是还没有发出的 UTF-8 文本字节数,也是只读属性。
2.3、对象事件
onopen - 连接时触发,用于指定连接成功后的回调函数。
使用语法:
// 方法一 :只可以指定一个回调函数
ws.onopen = function(){ }
//方法二 :可以指定多个回调函数
ws.addEventListener('open',function(){ })
onclose - 关闭时触发,指定连接关闭时回调函数。
使用语法:与 onopen 完全一致。
onmessage - 客户端接收服务端数据时触发,指定回调函数。
使用语法:
// 方法一:
ws.inmessage = function(event){
let data = event.data
//服务器传给客户端的数据
}
// 方法二:
ws.addEventListener('inmessage', function(event){
let data = event.data
//服务器传给客户端的数据
})
onerror - 通信发生错误时触发,并指定回调函数。
使用语法:
//方法一
ws.onerror = function(){
//错误处理
}
//方法二
ws.addEventListener('error',function(){
//错误处理
})
2.3、对象事件
send - 用于向服务器发送数据。
使用语法:
ws.send( data )
data :是发给服务器的数据,这个数据可以是字符串、数组、json、Blob 对象或 ArrayBuffer 对象等。
如发送 Blob 对象例子:
var file = document.querySelector('input='file'').files[0]
ws.send(file)
close - 关闭连接
使用语法:
ws.close()
HTML5(十一)——WebSocket 基础教程的更多相关文章
- 《HTML5与CSS3基础教程(第8版)》
<HTML5与CSS3基础教程(第8版)> 基本信息 原书名:HTML and CSS:visual quickstart guide 作者: (美)Elizabeth Castro ...
- HTML5与CSS3基础教程(第7版) 高清PDF扫描版
HTML5与CSS3基础教程(第7版)试读不仅介绍了文本.图像.链接.列表.表格.表单.多媒体等网页元素,也介绍了如何为网页设计结构.布局,添加动态效果.格式化等形式,此外还涉及调试和发布.聚合和吸引 ...
- HTML5与CSS3基础教程(第8版) PDF扫描版
<HTML5与CSS3基础教程(第8版)>自第1版至今,一直是讲解HTML和CSS入门知识的经典畅销书,全面系统地阐述HTML5和CSS3基础知识以及实际运用技术,通过大量实例深入浅出地分 ...
- 【02】HTML5与CSS3基础教程(第8版)(全)
[02]HTML5与CSS3基础教程(第8版)(全) 共392页. (魔芋:大体上扫了一遍.没有什么新东西,都是入门的一些基础知识.) 已看完. [美]elizabeth cast ...
- HTML5和CSS3基础教程(第8版)-读书笔记
第1章 网页的构造块 一个网页主要包括以下三个部分: n 文本内容(text content):在页面上让访问者了解页面内容的纯文字. n 对其他文件的引用(referen ...
- HTML5与CSS3基础教程第八版学习笔记11~15章
第十一章,用CSS进行布局 开始布局注意事项 1.内容与显示分离 2.布局方法:固定宽度和响应式布局 固定宽度,整个页面和每一栏都有基于像素的宽度 响应式布局也称为流式页面,使用百分数定义宽度 3.浏 ...
- HTML5和CSS3基础教程(第8版)-读书笔记(3)
第11章 用CSS 进行布局 网站设计主要有两大类型:固定宽度和响应式. 对于固定(fixed)布局,整个页面和每一栏都有基于像素的宽度.顾名思义,无论是使用移动电话和平板电脑等较小的设备查看页面,还 ...
- HTML5和CSS3基础教程(第8版)-读书笔记(2)
第7章 CSS构造模块 7.1 构造样式规则 样式表中包含了定义网页外观的规则.样式表中的每条规则都有两个主要部分:选 择 器(selector) 和 声 明 块(declaration block) ...
- HTML5与CSS3基础教程第八版学习笔记16-21章
第十六章,表单 HTML5引入了新的表单元素.输入类型和属性,以及内置的对必填字段.电子邮件地址.URL以及定制模式验证. 元素: <input type="email"&g ...
随机推荐
- 22.17、heartbeat和drbd整合
1.要确保master-db和slave-db的drbd服务和heartbeat服务都已经停止了: 2.heartbeate设置: 修改master-db和slave-db的'/etc/ha.d/ha ...
- 11、mysql索引详解
1.索引介绍: 2.建立索引的方法: 注意:索引名称不要相同: (1)在建表的时候,可以增加主键索引的语句如下: 1)例一: create table student1 ( id int(4) not ...
- web自动化之windows页面切换
一.为什么切换windows页面 在页面操作过程中,存在点击某个元素之后会重新打开一个windows页面,如果不切换至新页面的话,无法在新页面中进行操作,程序会出现报错 二.如何切换 1.获取当前所有 ...
- POJ 1410 判断线段与矩形交点或在矩形内
这个题目要注意的是:给出的矩形坐标不一定是按照左上,右下这个顺序的 #include <iostream> #include <cstdio> #include <cst ...
- angularjs的一点总结
一,错误小结 1.出现类似于下面的错误,就是说明 $sessionStorage 这个服务未找到 Error: [$injector:unpr] Unknown provider: $sessionS ...
- php 扩展 rabbitmq popt
首先是rabbitmq-c-master.tar.gz包, 可以访问https://github.com/alanxz/rabbitmq-c去下载最新的 wget https://github.com ...
- spring boot j集成seagger 加入拦截器后 swagger 不能访问
一开始我是这样排除拦截的,但是发现没用 后来我发现swagger的真实访问路径是这样的 转自: https://blog.csdn.net/ab1991823/article/details/7906 ...
- kali安装angr
最近打算重新学习一波angr,先把环境搭好 1. 先安装virtualenv,这玩意是可以创建一个纯净的python环境,我陷入了沉思,pyenv好像也可以 这里利用豆瓣的源下载,非常快而且很舒服 p ...
- 什么是 Acunetix 目标知识库
随着Acunetix 的最新更新,我们引入了一个称为目标知识库的新功能.每次扫描目标时,Acunetix 都会收集并存储有关它的信息.此信息包括构成站点结构的路径.表单的位置及其输入.Web 应用程序 ...
- kong配置service和route实现简单API代理
目录 通过konga连接kong实现API接口代理 1. ADD NEW SERVICE 2. ADD ROUTE 3. 验证API 代理 浏览器验证 请求kong api kong使用Admin A ...