websocket到底有什么用?websocket的理解与应用

1,241 阅读3分钟

cat-g601cbcf8e_1920.jpg 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

引言

websocket是一种协议,它实现了浏览器的全双工通信,相信这样的概念描述大家一定不陌生。但是对于大多数初学者来说这样的知识缺少相关的例子,很难让人记忆深刻。至少对于我来说是这样,在这里我想梳理一下在工作中遇到的需求场景,主要会用例子的方式为大家讲解。

需求一:实现预警信息的实时推送

需求详情:一个系统具备许多物联网设备,它们包括各种各样的传感器,如果温度过高,湿度过高或者机械故障,它们会提交一个错误信息,现在希望你能在页面中实时推送这样的信息,不触发刷新,即使用户挂机也能进行更新。

截屏2022-06-06 22.09.20.png

分析: 首先我们需要实时更新,我遇到该需求的时候第一反应其实是使用一个计时器,让它循环在一定间隔后去请求后端进行检验。这样做虽然能够解决问题,但是会对性能或后端造成不好的影响。所以否定。常规思路即然不行,那么我们有没有什么工具可以解决呢?

解决: 我们使用websocket可以非常完美的解决该问题。首先,在页面创建时,前端和后端建立websocket通信,建立通信后,每当新的预警向后端发送,并保存时,同时出发websocket推送,将预警信息推送给前端,前端进行渲染,则解决该问题。

需求二:实现设备实时位置的更新

需求详情:现在有很多的设备,例如农机设备或者车子,它们都使用gps进行定位,现在需要你实时监控这些设备,并且将其展示在地图上

截屏2022-06-06 22.13.50.png

分析: 其实遇到这样的问题是很棘手的,因为往往gps的获取是需要从第三方平台获取数据的,这样就会存在很多限制,问题也就随之出现,例如一次只能请求一个数据,并且伴随请求间隔,所以如果采用全部获取在渲染,页面就会阻塞严重。

解决 websocket可以对该问题进行很好的解决,因为我们需要的实际上就是一个数据的推送和展示。使用websocket我们就不必去等待数据全部取得,而可以做到获取一条更新一条。所以整体需求得以很好实现。

总结

其实websocket实际上解决的问题就是实时交流的问题,如果一个问题对实时的依赖很强,那么你就可以考虑使用websocket,例如聊天室之类的即时通讯也是如此。常见的,笔试平台的考官信息也是基于websocket。总之,websocket是一个非常简单而又便捷的工具,它对于特定的场景是具备非常重要的功能性的,希望大家都能将其用到自己的开发中。