摘要:在标准没有推出之前,轮询是唯一可行的方式通过浏览器也可以,但这里不做讨论。这种方式存在延时且对服务端造成很大负载。直到年,才标准化一种基于套接字进行收发数据的协议。现如今主流浏览器均已支持。
socket.io提供了基于事件的实时双向通讯
历史Web端与服务器间的实时数据传输的是一个很重要的需求,但最早只能通过AJAX轮询询实现。在WebSocket标准没有推出之前,AJAX轮询是唯一可行的方式(通过Flash浏览器也可以,但这里不做讨论)。AJAX轮询原理是设置定时器,定时通过AJAX同步服务器数据。这种方式存在延时且对服务端造成很大负载。直到2011年,IETF才标准化WebSocket——一种基于TCP套接字进行收发数据的协议。现如今主流浏览器均已支持WebSocket。
socket.io将数据传输部分独立出来形成了engine.io, engine.io对WebSocket和AJAX轮询进行封装,形成一套API,屏蔽了细节差异和兼容性问题,实现了跨浏览器/跨设备进行双向数据。
应用socket.io对engine.io不是必须的,你也可以实现自己的engine.io,通过server.bind绑定
实时数据分析展示(报表,日志)
即时通讯、聊天,
二进制流(图片,音乐,视频)传输
多人协同编辑
即时消息推送
类似技术AJAX轮询: 基于XMLHttpRequest的AJAX轮询
AJAX长轮询: 类似轮询,服务器在客户端请求后不返回响应,直到有数据需要传到客户端,传完数据后客户端再发起新的请求。缺点是要额外传输的HTTP头,保持住请求不响应也需要一些额外工作。
HTTP流: 与AJAX长轮询类似,服务端响应会带上HTTP头: Transfer-Encoding: chunked,返回完数据到客户端后客户端也不需要发起新的请求,缺点是各个chunk之间的数据难以识别和处理。
插件: 类似Flash,Silverlight, 作为插件越来越被主流浏览器和用户排斥
下面就不同角度对各技术进行分析
单向/双向
单向: AJAX轮询,AJAX长轮询,HTTP流
双向: WebSocket, 插件
延时
WebSocket < 插件 < HTTP流 < AJAX长轮询 < AJAX轮询
效率
插件 > WebSocket > HTTP流 > AJAX长轮询 > AJAX轮询
移动端支持
WebSocket: 基本均支持
HTTP流,AJAX长轮询,AJAX轮询: 基本均支持
插件: 基本不支持
开发或设置难易程度
WebSocket < AJAX轮询 < 插件 < AJAX长轮询,HTTP流
结论socket.io封装了WebSocket,不支持WebSocket的情况还提供了降级AJAX轮询,功能完备,设计优雅,是开发实时双向通讯的不二手段。
更多文章的目录在这里
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/82558.html
摘要:这个文件事件处理器是单线程的,所以叫做单线程模型,采用多路复用机制同时监听多个,根据上的事件来选择对应的事件处理器处理这个事件。 为什么使用缓存 优点: 高性能 高并发 MySQL天然对高并发不好,MySQL单机支撑2000qps也开始容易报警,可以使用缓存,让数据查询从缓存中拿出数据 缺点: 缓存的数据和数据库的数据不一致 缓存雪崩 缓存穿透 缓存并发竞争 redis 和m...
摘要:阻塞当进行读写时,线程是阻塞的状态。当任何一个收到数据后,中断程序将唤起进程。接收数据当收到数据后,中断程序会给的就绪列表添加引用。当接收到数据,中断程序一方面修改,另一方面唤醒等待队列中的进程,进程再次进入运行状态如下图。 本篇文章目的在于基本概念和原理的解释,不会贴过多的使用代码。 什么是NIO Java NIO (New IO)是 Java 的另一个 IO API (来自 jav...
摘要:为了达到这种双向的实时消息传递,很明显地考虑用来实现。注意这个文件并不能用在实际的项目中,只是用来显示消息推送的效果而已。参考资料本文在我博客上的原地址利用实现消息实时推送 项目背景介绍 最近在写的项目中存在着社交模块,需要实现这样的一个功能:当发生了用户被点赞、评论、关注等操作时,需要由服务器向用户实时地推送一条消息。最终完成的项目地址为:socket-message-push,这里...
阅读 2135·2021-10-08 10:15
阅读 1160·2019-08-30 15:52
阅读 495·2019-08-30 12:54
阅读 1510·2019-08-29 15:10
阅读 2668·2019-08-29 12:44
阅读 2986·2019-08-29 12:28
阅读 3325·2019-08-27 10:57
阅读 2185·2019-08-26 12:24