webSocket 和 webWorker

Web Socket、Web Worker、Service Worker WebSocket是一种在单个TCP连接上进行全双工通信的协议,允许客户端和服务器端之间的实时数据交换,其位于OSI模型的应用层。与传统的HTTP请求相比,在WebSocket,只需要完成一次握手,两者就可创建持久性的连接。具有更低的延迟和更高的并发性,适用于实时通信场景。 阅读详情

HTML5:web socket 和 web worker

做练习遇到了一个选择题,是关于web worker的,问web worker会不会影响页面性能?补习功课之后,答案是不会影响。

查阅了相关资料学习web worker,又遇到了web socket,整理如下:

web socket 和 worker 的作用:为构建高效能的web应用提供了新的参考方案。

web socket提供更高效的传输协议,web worker提供多线程提高web应用计算效率。

一.web socket

1.web socket是一种协议,本质上和http,tcp一样。协议是用来说明数据是如何传输的,写过一个小的在线聊天使用了socket.io,之后总结这个项目。

2.web socket的前缀有两种:(1)ws://  不是加密的。 (2)wss://  是加密的。

3.客户端和服务端进行web socket交互的方式也可以理解为“http握手 + tcp数据传输”的方式:

(1)浏览器(支持Websocket的浏览器)像HTTP一样,发起一个请求,然后等待服务端的响应;

(2)服务器返回握手响应,告诉浏览器请将后续的数据按照websocket制定的数据格式传过来;

(3)浏览器和服务器的socket连接不中断,此时这个连接和http不同的是它是双工的了;

(4)浏览器和服务器有任何需要传递的数据的时候使用这个长连接进行数据传递。

注:HTTP握手:是因为浏览器和服务器在建立长连接的握手过程是按照HTTP1.1的协议发送的,有Request,Request Header, Response, Response Header。但是不同的是Header里面的字段是有特定含义的。

     TCP传输: 主要体现在建立长连接后,浏览器是可以给服务器发送数据,服务器也可以给浏览器发送请求的。当然它的数据格式并不是自己定义的,是在要传输的数据外层有ws协议规定的外层包的。

4.数据传输过程:websocket的数据传输形式是:frame。比如会将一条消息分为几个frame,按照先后顺序传输出去。这样做会有几个好处:

(1)大数据的传输可以分片传输,不用考虑到数据大小导致的长度标志位不足够的情况。

(2)和http的chunk一样,可以边生成数据边传递消息,即提高传输效率。

5.客户端使用web socket的语法:JavaScript。

   服务端:多种web框架支持。

二.web worker

1.当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。

而web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。

除了DOM操作之外,理论上任何JS脚本任务都可放入worker中执行;语法上的限制,则是不能跨域访问JS。worker常用于需要消耗大量时间和CPU资源的复杂计算,以换来前台用户操作的友好型;换句话说,从用户体验上看,提高了服务性能。

2.web worker使用:(当我们创建 web worker 对象后,它会继续监听消息(即使在外部脚本完成之后)直到其被终止为止。)

(1)通过向 web worker 添加一个 "onmessage" 事件监听器来获取接受到的消息。

    发送消息:postMessage()

    终止 web worker,并释放浏览器/计算机资源: terminate() 

 

1  var worker =new Worker("worker_job.js"); //创建一个Worker对象并向它传递将在新线程中执行的脚本的URL
2 
3  worker.postMessage("hello world");     //向worker发送数据
4  
5  worker.onmessage =function(evt){     //接收worker传过来的数据函数
6    console.log(evt.data);              //输出worker发送来的数据
7  }

 

(2)通过添加事件监听器来处理message,在worker内部通过self.函数来和主线程通信:

 

1 self.addEventListener('message', function(e) {
2     var data = e.data;
3     if(data == 'init')
4         init();
5     else
6         ...
7 }, false);
8 
9 self.postMessage("hello worker");

 

如有错误,请您指正!

 

参考文献:https://www.cnblogs.com/ksl666/p/5968595.html

Web Worker 和 WebSocket的区别 Web Worker 生命周期由主线程控制,而WebSocket 的生命周期与服务器端的连接有关。 阅读详情

相关推荐

socketio-shared-webworker:WebWorker线程内的Socket.io客户端

共享WebWorker中的Socket.io 在共享的Webworker中运行Socket.io,可以为多个浏览器窗口和选项卡共享一个Socket.io Websocket连接。 替换了socket.io客户端。 快速安装 npm i --save socketio-shared-webworker 原因 单个websocket连接效率更高 页面刷新和新标签页已经建立了Websocket连接,因此连接设置时间为零 websocket连接在单独的线程/进程中运行,因此您的UI更快 由于更新只有一个来源,因此事件通知的关联化更为简单 可以扩展为浏览器窗口/选项卡之间IPC的基础 这是很酷的东西。 当前支持 目的是支持Socket.io客户端API中的所有方法。 往返于socket.io的所有事件将由Webworker转发。 订阅事件io.on('event', fn)是每个选项卡/

Web Worker和WebSocket

1、Web Worker 1)Web Worker 是运行在后台的 JavaScript、独立于其他脚本、不会影响页面的性能、您可以继续做任何愿意做的事情:点击、选取内容等等、而此时 Web Worker 在后台运行; 2)除了DOM操作之外、理论上任何JS脚本任务都可放入worker中执行; 3)不能跨域访问JS; 4)从用户体验上看、提高了服务性能。 5)使用: (1)new Wo

michael8512的博客 2987

汽车BMS技术分享及其HIL测试方案

在全球碳中和目标的战略驱动下,新能源汽车产业正以指数级速度重塑交通出行格局。动力电池作为电动汽车的"心脏",其性能与安全性不仅直接决定了车辆的续航里程、使用寿命等关键指标,更深刻影响着消费者对电动汽车的市场接受度。而电池管理系统(Battery Management System, BMS)是动力电池安全运行与性能释放的核心技术支撑。

Speedgoat的博客 2687

HTML5:web socket 和 web worker

做练习遇到了一个选择题,是关于web worker的,问web worker会不会影响页面性能?补习功课之后,答案是不会影响。 查阅了相关资料学习web worker,又遇到了web socket,整理如下: web socket 和 worker 的作用:为构建高效能的web应用提供了新的参考方案。 web socket提供更高效的传输协议,web worker提供多线程提高...

419

手把手教你安装 Vivado2022.2(附安装包)

Vivado 2022.2版本与之前的版本相比,具有以下几个显著的优势:电源设计管理器(PDM):Vivado 2022.2引入了全新的电源设计管理器(PDM),这是一个下一代功耗评估平台,为Versal® 和 Kria™ SOM提供了准确一致的功耗估计能力。PDM是Versal产品家族的首选功耗评估工具,为Versal ACAP硬IP块提供增强向导,简化从XPE向PDM的迁移,帮助用户获得准确的功耗评估。

dpwkj的博客 2万+

Skiplist,B,B+tree,LSM tree

SkipList 理解(如何实现): 即使是有序的链表,查找的时间复杂度也是O(n),但链表不能随机访问所以不适用于二分查找,使得查找的时间复杂度为O(logn)。 于是将有序链表和二分查找结合得到了SkipList,类似于二叉搜索树,这是一种以空间换时间的算法,通过在每个节点中增加向前的指针,从而提升查找效率(如下图所示)。 一开始如a所示,是一个有序的链表,时间复杂度O(n)。随后建立了e所示的SkipList,从最顶层往下查找,可以跳过许多元素,减少查找次数。 ​

weixin_45875458的博客 947

一文带你搞定什么是WebSocket和WebWorker

搞懂WebSocket和WebWorker

zxc123401的博客 1828

飞牛fnOS安装1Panel后Docker容器消失?三步教你恢复数据并避免踩坑

本文详细解析了飞牛fnOS安装1Panel后Docker容器消失的问题,指出这是由于daemon.json文件被覆盖导致。通过SSH连接、修复配置文件和系统重启三个步骤,用户可以轻松恢复数据。文章还提供了预防措施和最佳实践,帮助用户避免类似问题。

yellow的专栏 873

html5 websocket post,javascript – Webworker中的HTML5 Websocket

我已经设法使用Chrome在webworker中使用websockets,但仅用于接收数据.当我尝试发送数据时,我得到一个DOM异常,有没有人设法发送数据?这就是我对网络工作者所拥有的.self.addEventListener('message', function(e) {var data = e.data;switch (data.cmd) {case 'init':self.postMes...

weixin_34118910的博客 327

WIN10系统下VS2019编译CloudCompare2.12.4

CloudCompare2.12.4

点云侠的博客 3143

9.23华为OD机试真题 新系统 - 小菊的寻宝之旅 (Java/Py/C/C++/Js/Go)

9.23华为OD机试真题 新系统 - 小菊的寻宝之旅 (Java/Py/C/C++/Js/Go)

算法大师! 1002

WebWorker与WebSocket实现前端消息总线

Web Worker让JS有了多线程的能力,可以将复杂耗时的操作都交付给Worker线程处理。WebSocket让web端与服务端维持一个有效的长连接,实现服务端主动推送数据。将二者一结合,业务系统信息流转通知功能完全就可以剥离出来。 架构图 JS Worker Worker工作在一个专用的作用域DedicatedWorkerGloba...

weixin_34152820的博客 890

组合导航 | RTK、IMU与激光雷达组合导航算法:原理、实现与验证

当激光雷达噪声增加至0.1m时,系统位置RMSE仅上升18%,验证了滤波算法的鲁棒性[110]:融合方案在RTK信号丢失30秒后,位置误差仍控制在1.5m内,显著优于IMU单独导航[28]:ESKF框架能有效建模传感器误差特性,状态向量需包含外参与时间偏移等关键参数。:传感器标定精度直接影响系统性能,建议每3个月进行一次重新标定。:IMU预积分与特征匹配是系统实时性的关键瓶颈,需重点优化。:维持10秒窗口内的关键帧,平衡精度与实时性[132]:特征匹配占总耗时的65%,可通过。

尘世冰封的专栏 944

WebWorker和Server-Sent Events和HTML5 WebSocket

WebWorker 什么是WebWorker? web worker 是运行在后台的 JavaScript,不会影响页面的性能。 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。 web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。

Millet 763

新版ThingsBoard 4.2.0在windows上用IDEA编译记录

编译thingsboard4.2.0在windows上使用Idea

hssjf的专栏 1482

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

html5-WebWorker-WebSocket实时通讯-sse服务器发送事件

Web Worker线程、WebSocket实时通讯、sse服务器发送事件

weixin_58431406的博客 995

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

websocket webworker

对我来说最快的学习途径是实践,所以找两个东西来练手。一个是websocket一个是webwoker,今天先说第一个。 要理解socket就要先理解http和tcp的区别,简单说就是一个是短链,一个是长链,一个是去服务器拉数据,一个是服务器可以主动推数据。 而socket就是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的T...

weixin_30847271的博客 82

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

HTML5 中的音频/视频,canvas,地理定位,拖放,WebSocket,WebWorker,SVG

音频与视频- 音频视频标签 音频标签 浏览器支持的音频格式:MP3, wav, ogg 简写方式: <audio src="音频文件路径" controls></audio> 标准方式: <audio controls> <source src="letitgo.mp3" type="audio/mpeg"/> <sou...

qq_46027468的博客 539

深度剖析node-webworker通信机制:在UNIX域套接字上跑WebSocket协议的秘密

node-webworker 是 Node.js 平台上的 Web Workers API 实现,它的通信机制堪称经典:主进程与每个 Worker 子进程之间,通过 UNIX 域套接字建立连接,再在其上协商出一条 WebSocket 通道来交换消息。本文将带你快速看懂这套"在 UNIX 域套接字上跑 WebSocket 协议"的完整设计,理解进程间通信、消息帧格式、文件描述符传递与优雅关闭的每个细

gitblog_00261的博客 475

webworker中用ajax,WebWorker与WebSocket实现前端消息总线(示例代码)

Web Worker让JS有了多线程的能力,可以将复杂耗时的操作都交付给Worker线程处理。WebSocket让web端与服务端维持一个有效的长连接,实现服务端主动推送数据。将二者一结合,业务系统信息流转通知功能完全就可以剥离出来。架构图JS WorkerWorker工作在一个专用的作用域DedicatedWorkerGlobalScope,在这个作用域中,不能直接操作DOM节点,不能使用Win...

weixin_35767338的博客 712

WebSocket/WebWorker/WebStorage(HTML5的一些新特性)

WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duple)。一开始的握手需要借助HTTP请求完成。 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器。这种传统的HTTP request 的

希希的博客 2581

html5 websocket post,javascript - HTML5 Websocket within Webworker - Stack Overflow

I've managed to get websockets working inside a webworker using Chrome, but only for receiving data. When I try to send data I get a DOM Exception, has anyone managed to send data?This is what I have ...

weixin_29430629的博客 130

web Worker和webSocket 的使用

1、web Worker的使用: function webWorkerUser(params) { var worker = new Worker();// var worker = new Worker(url);创建worker并且返回一个worker实例 worker.postMessage(data);// 向worker发送数据; worker....

rose999ying的博客 2229
上一篇: 详解CSS3的弹性盒模型
下一篇: 纯js计算字符串中的字符的个数(汉字算两个字符计算)
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值