HTML5之webSocket使用

webSocket是什么

webSocket是HTML5新出的一种协议,底层是基于TCP/IP协议的。跟http没有关系,只是复用了http握手通道,用来升级协议。

webSocket的作用

轮询:客户端以一定的时间间隔向服务端发出请求,以频繁请求的方式来保持客户端和服务器端的同步。缺点:

  • 浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。

长轮询:浏览器向服务器发送请求,服务器将请求保持打开一段时间。如果在该时间段内收到通知,则将包含该消息的响应发送到客户端。如果在设定的时间段内未收到通知,则服务器发送响应以终止打开的请求。缺点:

  • 当具有较高的消息量时,长轮询不会提供比传统轮询更大的性能改进
  • 服务器端会阻塞请求直到有数据传递或超时才返回

使用webSocket浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
优点:

  • 能更好的节省服务器资源和带宽
  • 支持双向通信,实时性更强
  • 可以发送文本,也可以发送二进制数据

webSocket的使用

服务端:

var app = require('express')();
var WebSocket = require('ws');
var wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function connection(ws) {ws.on('message', function incoming(message) {console.log(message);});ws.send('the content from server');
});
app.listen(3000,() => {console.log('you are listening port 3000');
});

客户端:

    var ws = new WebSocket('ws://localhost:8080');ws.onopen = function () {ws.send('the request from client');};ws.onmessage = function (e) {console.log('from server: ' + e.data);};

webSocket应用场景

社交聊天、弹幕、多玩家游戏、协同编辑、股票基金实时报价、体育实况更新、视频会议/聊天、基于位置的应用、在线教育、智能家居等需要高实时的场景

参考资料:WebSocket:5分钟从入门到精通

转载于:https://www.cnblogs.com/moqiutao/p/9988880.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql5.7.17的linux安装,linux下mysql5.7.17最新稳定版本安装教程

通过源码在linux上安装mysql最新稳定版本:mysql-5.7.17为了方便安装过程中不受boost依赖的影响,直接从官网下载mysql-boost-5.7.17.tar.gz版本。(官方解释,编译过程中需要boost,但实际没有用到。)安装目录:启动脚本:/e…

Linux 常用命令学习

参考:Linux 常用命令学习 网址:https://www.runoob.com/w3cnote/linux-common-command-2.html 目录1、ls命令2、cd 命令3、pwd 命令4、mkdir 命令5、rm 命令6、rmdir 命令7、mv 命令8、cp 命令9、cat 命令10、more 命令11、less 命令12、head 命令13、ta…

视频专辑:Servlet视频教程

为什么80%的码农都做不了架构师?>>> 专辑:Servlet视频教程 简介:郭宏志 Servlet视频教程 1 郭宏志 Servlet 01 WEB工程结构 2013-10-26 00:32 | 播放(9) | 评论(0) | 时长:28:39 2 郭宏志 Servlet 02 Servlet简介 2013-10-26 00:31 …

阅读【现代网络技术 SDN/NFV/QOE 物联网和云计算】 第一章

本人打算阅读这本书来了解物联网和云计算的基础架构和设计原理。特作笔记如下: 作者: William Stallings 本书解决的主要问题: 由单一厂商例如IBM向企业或者个人提供IT产品和服务,包括计算机软件,硬件,通信…

python items函数用法,Python中dictionary items()系列函数的用法实例

本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值。具体分析如下:先来看一个示例:import html # available only in Python 3.xdef make_elements(name, value, **attrs):keyvals [ %s"%…

SVN安装部署

svn安装版本用的是1.8 SVN属于功能性软件,yum安装即是最佳实践。 安装svn yum install subversion 检查svn是否安装完毕 [rootmysql ~]# rpm -qa subversion subversion-1.6.11-15.el6_7.x86_64 卸载原来svn yum remove subverson 设置svn1.8安装源 vim /etc/yum.re…

你可能不知道的跨域解决方案

出于浏览器的同源策略,我们经常会遇到浏览器跨域的问题。 简单的说跨域基本解决方案是: GET请求用JSONP其他请求用同源iframe做代理JSONP的介绍很多,这里就不多说了。 而同源iframe做代理主要是主窗口与iframe的通讯问题,因为这里…

基于wemos D1的无线遥控灯(433m无线模块)

参考:基于wemos D1的无线遥控灯(433m无线模块) 作者:一只小阿大:) 发布时间: 2021-04-16 09:25:53 网址:https://blog.csdn.net/qq_44610809/article/details/115747714 项目软硬件平台及开发环境 1.硬件平台 开发板&#xff1a…

Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)

一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的。因此,我们应尽量隐藏或消除Web服…

php debug用什么意思,phpdebug_backtrace()函数是干什么的?

定义和用法PHP debug_backtrace() 函数生成一个 backtrace(回溯信息)。该函数返回一个关联数组。下面是可能返回的元素:名称类型描述function字符串当前的函数名。line整数当前的行号。file字符串当前的文件名。class字符串当前的类名object对象当前对象。type字符串…

探索云计算、大数据的特色化应用之路

云计算与大数据是当前最热门的两个话题,除了技术上的相关性以外,两者现在都面临同一个问题,就是如何更快更好地落地,也就是将云计算、大数据所代表的新技术、新业务模式与行业用户的实际需求紧密结合起来,驱动企业业务…

树莓派摄像头使用Motion监测人物动作

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

ARM(IMX6U)ARM Cortex-A7中断系统(GPIO按键中断驱动蜂鸣器)

参考:Linux之ARM Cortex-A7 中断系统详解 作者:一只青木呀 发布时间: 2020-09-16 16:07:22 网址:https://blog.csdn.net/weixin_45309916/article/details/108290225 目录1、中断是什么2、回顾STM32中断系统2.1、中断向量表(对应的…

linux php cli 太多,【linux】php cli 处理能力到底有多强?

场景描述:client(单片机) — send MQ —> MQ Server — Received —> php脚本(业务 DB)文字说明: 就是简单的一种MQ应用场景问题描述:(一说到这就想骂人)暂且80个client(听说后期5000的量), 4个PHP脚本处理进程才应付得过来。正常情况下&#xff…

测试——设计思维之获取反馈

获取用户反馈 为什么要测试? 尽早的从用户,干系人,专家那边获得反馈,能够迭代改善通过测试能够知道我们的主意设想的强项和弱势早失败如何测试? 让原型自己说话不要为自己的想法狡辩,原型是给用户&#xff…

Idea 设置Eclipse快捷键(常用)

使用Idea不习惯,特此将其配置成Eclipse风格的。 1、选择Eclipse风格,选择copy一份,可以自己重命名。 2、设置生成快捷键的快捷键(例如:Eclipse中的Alt/) 3、设置main函数快捷键(补充&#xff1a…

php oracle视图,Oracle v$database视图分析

GUARD_STATUS:防止数据库修改的状态(可能为all或者none或者standby) SUPPLEMENTAL_LOG_DATA_MIN: SUPPLEMENTAL_LOG_DATA_PK:SQL> desc v$database名称 是否为空? 类型----------------- -------- ------------DBID NUMBERNAME VARCHAR2(…

精确JS乘除法

//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。function accMul(arg1,arg2) {var m0,s1arg1.toString(),s2arg2.toString();try{ms1.split(".")[1].length}catch(e){}try{ms2.spli…

ARM(I.MX6ULL) EPIT定时器中断实验、定时器按键消抖

参考:Linux之ARM (I.MX6ULL) EPIT定时器详解 作者:一只青木呀 发布时间: 2020-09-20 10:03:37 网址:https://blog.csdn.net/weixin_45309916/article/details/108689629 参考:Linux驱动中按键消…

ThinkPHP模型连接数据库 查询 ajax

1.连接数据库 在模板配置文件里面写 2.创建Model模型 让Home和Admin共同使用 3.实例化模型的方法 第一种: 第二种: M()方法 第三种:D()方法 M()方法和D()方法的区别: 在tp3.2以后,M()和D()是一样的,在3.2…