Socket.IO

Nodejs之WebSocket

谁说我不能喝 提交于 2020-08-18 03:16:15
文章导读:  一、概述-what's WebSocket?  二、运行在浏览器中的WebSocket客户端+使用ws模块搭建的简单服务器  三、Node中的WebSocket  四、socket.io  五、扩展阅读 一、概述-what's WebSocket? 1.1 为什么我们需要WebSocket这样的实时的通信协议? WebSocket是web通信方式的一种,像我们熟知的HTTP协议也是web通信方式的一种。但是我们知道HTTP协议是一种无状态的协议,其服务端本身不具备识别客户端的能力,必须借助外部的一些信息比如说session和cookie,才能与特定的客户端保持通信。也就是说我们所发送的每一个HTTP的请求都会带上请求头中一些相应的信息还有cookie,这明显会增加我们传输的信息的体量从而带来一定的网络延迟,对于一些对通信的实时性要求比较高的应用来说就是不可忍受的了,比如说聊天程序或者是运行在浏览器中的实时小游戏。最郁闷的却还是这些头信息和cookie往往对于服务器响应客户端的请求来说是多余的,也就是说虽然我每个请求都带了这些信息,但是服务器与客户端的交互过程中可能根本用不上这些信息。 为了改善HTTP请求的这种网络延迟的情况,也出现了一些适应不同需求的其他的[ web通信 ]方式,比如说:轮询,长轮询( long-polling ),数据流,EventSouce等等

互动直播中的前端技术 -- 即时通讯

删除回忆录丶 提交于 2020-08-16 22:27:42
前言 在疫情期间,上班族开启了远程办公,体验了各种远程办公软件。老师做起了主播,学生们感受到了被钉钉支配的恐惧,歌手们开启了在线演唱会,许多综艺节目也变成了在线直播。在这全民互动直播的时期,我们来聊聊互动直播中的即时通讯技术在前端中的使用。 即时通讯技术 即时通讯(Instant Messaging,简称IM)是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。如何来实现呢,通常我们会使用服务器推送技术来实现。常见的有以下几种实现方式。 轮询(polling) 这是一种我们几乎都用到过的的技术实现方案。客户端和服务器之间会一直进行连接,每隔一段时间就询问一次。前端通常采取setInterval或者setTimeout去不断的请求服务器数据。 优点:实现简单,适合处理的异步查询业务。 缺点:轮询时间通常是死的,太长就不是很实时,太短增加服务器端的负担。不断的去请求没有意义的更新的数据也是一种浪费服务器资源的做法。 长轮询(long-polling) 客户端发送一个请求到服务端,如果服务端没有新的数据,就保持住这个连接直到有数据。一旦服务端有了数据(消息)给客户端,它就使用这个连接发送数据给客户端。接着连接关闭。 优点:对比轮询做了优化,有较好的时效性。 缺点:占较多的内存资源与请求数。 iframe流