关于socket.io:SocketIO-解决-WebSocket-通信

大家好呀,我是小菜~ 本文次要介绍 Socket.IO 微信公众号已开启,小菜良记,没关注的同学们记得关注哦! 在介绍 Socket.IO 之前, 咱们先思考一个问题, 如果这个时候有个需要, 相似实现人工客服的性能该如何实现? 在线客服,需要了解起来很简略,就相当于一个 web 的聊天页面,也就是客户端可能 即时拉取到服务端的响应当然, 作为接口工程师, 这并不是一个很难解决的问题, 咱们能够提供一个获取聊天记录的接口, 通过该接口咱们能够获取到 对方曾经发送到音讯. 那么问题又来了, 如何保障可能 即时 的获取到聊天记录呢? 想必这也不是问题, 前端能够通过定时器 的形式, 将间隔时间缩短到 100 毫秒, 这样子就曾经实现了近实时的获取音讯 setInterval(function () { // do something},100)当咱们写完以上代码上线后, 却通过监控能够发现, 上线后的服务器指标显著比之前有所晋升 服务器是非常宝贵的资源, 那么为什么会产生这种状况呢? 回过头一想, 会产生这种状况也无可非议, 每 100 毫秒就申请一 次后端, 如果有聊天记录产生, 那么这种申请就认为是有意义的, 但如果长时间未聊天, 每次申请返回都是空记录, 那么这种 频繁申请就是无意义的. 频繁申请会使服务器压力增大, 并且节约带宽流量. 那么有没有别的形式能够解决? 咱们兴许能够应用 SSE 形式, SSE 并不是一个什么比拟新鲜的概念, 它呈现的工夫也很早 SSE 全称 Server-Sent Events,指的是网页主动获取来自服务器的更新,也就是自动化获取服务端推送至网页的数据,这是一个 H5 的属性,除了 IE,其余规范浏览器根本都兼容这种形式不须要客户端定时去获取,而是服务端向客户端申明要发送流信息,而后连续不断地发送过去 只管这种形式不须要定时轮询, 然而它只能单工通信,建设连贯后,只能由服务端发往客户端,且须要占用一个连贯,如果须要客户端向服务端通信,那么须要额定再关上一个连贯! ...

March 13, 2022 · 3 min · jiezi