前端知识点——Web Sockets

本系列文章是我在实习面试之前的对自己掌握的知识点的总结,就从一直不太熟悉的webSockets开始吧~

WebSockets的第一印象:
可以创建和服务器进行双向会话的高级技术,取代了曾经使用的轮询方法。

API

  • WebSocket:用于连接WebSocket服务器的对象
  • CloseEvent:关闭连接时WebSocket对象触发的事件
  • MessageEvent:从服务器获取到消息的时候,WebSocket触发的事件

WebSocket对象

WebSocket对象用于创建和管理WebSockets连接,并通过这个连接发送和接受

参数:

  • url:要连接的url,ws或wss
  • protocols:协议名字字符串或数组,子协议,默认为空

异常:

  • SECURITY_ERR:表示试图连接的端口被屏蔽

方法:

  • WebSocket.close([code,[reason]])

    • 关闭WebSocket连接或停止正在进行的连接请求
    • 参数
      • code:关闭连接的状态号,默认为1000
      • reason:字符串,连接被关闭的原因
    • 异常
      • INVALID_ACCESS_ERR:无效的code
      • SYNTAX_ERR:reason太长
  • WebSocket.send(data)

    • 通过连接向服务器发送数据
    • 参数
      • data:发送的数据
    • 异常
      • INVALID_STATE_ERR:当前的连接状态不是open
      • SYNTAX_ERR:数据不合法

属性:

属性名 类型 描述
binaryType string 传输的二进制内容类型,blob/arrayBuffer
bufferedAmount long 调用send方法后,队列中等等待数据的大小,发送后为0
extensions string 服务器选定的扩展
onclose EventListener 监听close
onerror EventListener 监听error
onmessage EventListener 监听message,消息到达触发
onopen EventListener 监听连接打开事件,readyState为open时触发
protpcol string 服务器选定的子协议的字符串
readyState short 连接的当前状态
url string 传入构造器的url

readyState常量:

常量 描述
CONNECTING 0 连接尚未开启
OPEN 1 连接已经开启,准备通信
CLOSING 2 连接正在关闭
CLOSED 3 连接已经关闭或者无法建立

例子

url来自http://www.blue-zero.com/WebSocket/

// Create WebSocket connection.
const socket = new WebSocket('ws://121.40.165.18:8800');// Connection opened
socket.addEventListener('open', function (event) {socket.send('Hello Server!');
});// Listen for messages
socket.addEventListener('message', function (event) {console.log('Message from server ', event.data);
});// Listen for closed
socket.addEventListener('close', function (event) {console.log('Message from server ', event.data);
});

同时WebSocket需要服务器端支持,比如Node.js端可以使用以下常用的库:

  • Socket.IO
  • WebSocket-Node
  • ws

Socket.IO例

客户端

let socket = io('http://localhost');
socket.on('news', function (data) {console.log(data);socket.emit('clientMsg', { my: 'data' });
});

服务端

首先要安装socket.io模块

npm install socket.io --save

或者在本目录下执行 npm install

serve.js 中粘贴如下代码

var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs');app.listen(80);function handler (req, res) {fs.readFile(__dirname + '/index.html',function (err, data) {if (err) {res.writeHead(500);return res.end('Error loading index.html');}res.writeHead(200);res.end(data);});
}io.on('connection', function (socket) {socket.emit('news', { hello: 'world' });socket.on('clientMsg', function (data) {console.log(data);});
});

执行 node serve.js并访问http://localhost:80

关于socket.io的其他API,文档以后再补充

前端知识点——Web Sockets相关推荐

  1. web前端知识点太多_前端知识点总结——框架中报错集锦(含解决方法)

    前端知识点总结--框架中报错集锦(含解决方法) 1.vue 1.指定template直接返回多个标签 Component template should contain exactly one roo ...

  2. 初学者web前端知识点--HTML部分

    初学者web前端知识点--HTML部分 html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. body:页面的主体标签,页面展现的内容就放置在这里面. title:页面的标题. ...

  3. 前端知识点总结—-响应式

    前端知识点总结--响应式 1.Responsive Web Page:响应式网页/自适应的网页2010年提出, 一个网页,会自动根据用户浏览设备不同,自动必变布局,可以被PC/PAD/PHONE 正常 ...

  4. 前端知识点回顾——HTML,CSS篇

    前端知识点回顾篇--是我当初刚转行为了面试而将自己学过的前端知识整理成的一份笔记,个人目的性很强,仅供参考. doctype 有什么用 doctype是一种标准通用标记语言的文档类型声明,目的是告诉标 ...

  5. 前端知识点总结——H5

    前端知识点总结--H5 1.html5新特性 (1)新的语义标签 (2)增强型表单* (3)音频和视频 (4)Canvas绘图 (5)SVG绘图 (6)地理定位 (7)拖动API (8)Web Wor ...

  6. 前端知识点HTML+基础JS总结

    前端知识点要概 1.基本类型和引用类型 基本类型:Number, String, Null, Undefined, Boolean, Symbol(ES6数据类型) 引用类型:Object.Array ...

  7. Web前端 VS Web后端

    想从事软件业的毕业生们大多要从基础的程序员做起.相较于其他的职位,Web软件开发工程师是一个技术要求较高.前景较好的工作.Web软件开发工程师可以分为Web前端和后端开发.那什么是Web前端,什么是W ...

  8. HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)...

    1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是coo ...

  9. bom event周期_前端知识点总结——BOM

    前端知识点总结--BOM 1.BOM: Browser Object Model 什么是: 专门操作浏览器窗口的API 没有标准, 导致浏览器兼容性问题 包括: window history loca ...

  10. 前端知识点总结——JS高级(持续更新中)

    前端知识点总结--JS高级(持续更新中) 1.字符串 什么是: 连续存储多个字符的字符数组 相同: 1. 下标 2. .length 3. 遍历 4. 选取: slice(starti[, endi] ...

最新文章

  1. tarjan算法不是很懂先mark一下。
  2. 三、Netty的粘包半包问题解决
  3. 9个高招,让企业WiFi速度飞起来!
  4. 股市红涨绿跌色系定义真的是中国特色吗?
  5. lisp提取长方形坐标_用 Python 对图片主体轮廓进行提取、颜色标记、并计算区域面积...
  6. 《JavaScript 高级程序设计(第四版)》
  7. linux vi 替换字符串,Linux vi编辑器如何查找与替换关键字
  8. 2019年阿里最新java编程规范-在线版
  9. 如何关闭Win10易升更新?
  10. FPGA基础知识13(二级D触发器应用于同步器,减少亚稳态)
  11. MySQL自动化巡检报告-v1.0
  12. A block IDR(s) method for nonsymmetric linear systems with multiple right-hand sides
  13. 3D视觉感知市场规模现状及行业发展前景分析
  14. Go爬取起点中文网 解决文字反爬
  15. 随记:普遍性验证、数学思维、代数基本定理及其它
  16. 苹果手机自带软件删除了怎么恢复_手机照片删除了怎么恢复?莫慌,这才是正确恢复方法!_...
  17. Text to image论文精读PDF-GAN:文本生成图像新度量指标SSD Semantic Similarity Distance
  18. spring boot初始化完成时(两种方式)执行某种操作
  19. 记一次,朋友圈9宫格图片分割线效果混账代码的优化
  20. .NET Framework 3.5 SP1 最终文件下载及离线安装

热门文章

  1. java static 详解
  2. 录制线上课程,有哪些形式,到底使用什么软件好?
  3. Python数据分析学习系列 十四 数据分析案例
  4. 计算机地图制图符号制作的心得,计算机地图制图实习报告.docx
  5. 银河麒麟服务器操作系统V10SP2安装虚拟化管理软件
  6. 华为USG6000V防火墙简单配置案例
  7. python计算微积分_python 微积分计算
  8. 计算机硬盘的常用分区工具,磁盘分区工具,详细教您硬盘分区工具diskgenius怎么使用...
  9. 图论(5)邻接谱,邻接代数,图空间,托兰定理
  10. 计算机科学之父图灵的一生