一、ajax短轮询
短轮询的原理很简单,每隔⼀段时间客户端就发出⼀个请求,去获取服务器最新的数据,⼀定程度上模拟实现了即时通讯。

1、优点:兼容性强,实现非常简单。
2、延迟性高,非常消耗请求资源,影响性能。

二、Comet
以即时通信为代表的web应用程序对数据的Low Latency要求,传统的基于轮询的方式已经无法满足,而且也会带来不好的用户体验。
其实,服务器推很早就存在了,在经典的client/server模型中有广泛使用,只是浏览器太懒了,并没有对这种技术提供很好的支持。
以下是典型的Ajax和Comet数据传输方式的对比,区别简单明了。
典型的Ajax通信方式也是http协议的经典使用方式,要想取得数据,必须首先发送请求。在Low Latency要求比较高的web应用中,只能增加服务器请求的频率。Comet则不同,客户端与服务器端保持一个长连接,只有客户端需要的数据更新时,服务器才主动将数据推送给客户端。
三、websocket
W3C给出了答案,在新一代html标准html5中提供了一种浏览器和服务器间进行全双工通讯的网络技术Websocket。从Websocket草案得知,Websocket是一个全新的、独立的协议,基于TCP协议,与http协议兼容、却不会融入http协议,仅仅作为html5的一部分。于是乎脚本又被赋予了另一种能力:发起websocket请求。这种方式我们应该很熟悉,因为Ajax就是这么做的,所不同的是,Ajax发起的是http请求而已。
与http协议不同的请求/响应模式不同,Websocket在建立连接之前有一个Handshake(Opening Handshake)过程,在关闭连接前也有一个Handshake(Closing Handshake)过程,建立连接之后,双方即可双向通信。
从浏览器支持角度来看,WebSocket已经近在眼前,但仍有一段较长的路要走,特别是在中国这个IE6、7、8依然盛行的国家,旧版本浏览器的消亡需要很长一段时间,在完全实现浏览器全兼容前,Comet技术可能仍然是最好的解决方案。不过,当前也已存在一些比较成熟的封装方案来解决这种兼容性限制,比如:开源的Socket.io。
四、SSE
服务端推送事件)是⼀种允许服务端向客户端推送新数据的HTML5技术。
优点:基于HTTP⽽⽣,因此不需要太多改造就能使⽤,使⽤⽅便,⽽websocket⾮常复杂,必须借助成熟的库或
框架。
缺点:基于⽂本传输效率没有websocket⾼,不是严格的双向通信,客户端向服务端发送请求⽆法复⽤之前的连
接,需要重新发出独⽴的请求。

前端如何实现即时通信?相关推荐

  1. 使用flask_socketio实现客户端间即时通信

    关于flask_socketio的入门可以看我的上一篇博客<使用flask_socketio实现服务端向客户端定时推送> 用socketio实现即时通信十分简单,只需要客户端发送用户输入的 ...

  2. 微信小程序-腾讯云即时通信 IM 小程序直播(一)

    一.这里我们先讲讲使用腾讯云直播 流程 请先将1.2.3的都去简单的过一遍 就是组件的参数了解一下 1.准备推流跟拉流地址 (登录腾讯云在控制台 在直播工具箱 找到创建推流跟拉流)推流跟拉流的地址是不 ...

  3. [Web端接入经验分享] 腾讯云即时通信TIM、实时音视频TRTC

    [Web端接入经验分享] 腾讯云即时通信TIM.实时音视频TRTC 即时通信TIM官网地址 即时通信TIM SDK API文档地址 实时音视频TRTC官网地址 实时音视频TRTC SDK API文档地 ...

  4. 【探花交友】day06—即时通信

    目录 1.即时通信 1.1.什么是即时通信?​编辑 1.2.功能说明 1.3.技术方案 2.环信 2.1.开发简介 2.2.环信Console 2.3.接口说明 3.抽取环信组件 3.1.编写Huan ...

  5. 【新知实验室 - TRTC 实践】音视频互动 Demo、即时通信 IM 服务搭建

    一.TRTC 初识 TRTC 是什么 TRTC(Tencent RTC)腾讯实时音视频,源自于 QQ 音视频团队,是基于 QQ 音视频多年来的音视频技术积累,位于腾讯云的 RTC 云服务.TRTC 支 ...

  6. 关于websocket做即时通信功能

    本文以网页端实现即时通信,用抢麦器的业务场景来完成即时的效果,需要Fleck.dll和Newtonsoft.Json.dll支持,Fleck是即时通信的核心,Newtonsoft.Json是json格 ...

  7. 手淘千牛IM即时通信 - 星巴克消息开放实践

    对垂直业务领域进行了解,抽象成领域模型,沉淀出通用能力和标准化体系,为后续业务赋能. 这是笔者理解的技术驱动业务.生于业务,又高于业务 笔者很荣幸可以参与到淘宝小程序的开放体系中,消息能力的开放也是里 ...

  8. IM即时通信多房间聊天室仿微信聊天(四)

    聊天记录的保存和展示 IM即时通信多房间聊天室仿微信聊天(一) IM即时通信多房间聊天室仿微信聊天(二) IM即时通信多房间聊天室仿微信聊天(三) 聊天消息的保存我们直接在服务端接收到客户端发送的消息 ...

  9. 探花交友_第7章_即时通信(新版)

    探花交友_第7章_即时通信 文章目录 探花交友_第7章_即时通信 1.1 什么是即时通信 1.2 功能说明 1.3 技术方案 2. 环信 2.1 开发简介 2.2 环信Console 2.3 环信AP ...

最新文章

  1. yolov3(一:模型训练)
  2. Datawhale组队学习周报(第041周)
  3. Android图形---OpenGL(二)
  4. D3.js比例尺 定量比例尺 之 线性比例尺(v3版本)
  5. CTFshow php特性 web115
  6. CentOS 卸载OpenJdk和Tomcat开机启动
  7. C++中cin、cin.get()、cin.getline()、getline()等函数的用法
  8. c语言中0级和1级是什么意思啊,C语言处理指针问题中,二级指针与一级指针的区别是什么?...
  9. 43次课(限定某个目录禁止解析php、限制user_agent、 php相关配置)
  10. iOS开发-获取rootViewController的正确方式
  11. 海拔高度与大气密度的关系函数
  12. TwinCAT-C++基础
  13. The server encountered an unexpected condition that prevented it from fulfilling the request.(解决思路)
  14. 【商城秒杀项目】-- 流量削峰应该怎么做
  15. windows电脑防火墙关闭,一键系统防火墙关闭工具推荐
  16. 对《Mode-Adaptive Neural Networks for Quadruped Motion Control》一文的理解(上)
  17. 怎么正确有效学习计算机专业
  18. Matlab中库函数imadjust()的使用细节
  19. java里如何表示黑桃方片_扑克红桃,方片,黑桃,梅花他们的顺序如何,代表什么意义呀?jac 爱问知识人...
  20. 关于QXDM的安装,解决Win7下QIK报错的问题

热门文章

  1. Android中计步器的实现
  2. 用Glide-图片的压缩-图片压缩原理
  3. 源IP源MAC目的IP目的MAC,在整个网络中的变化
  4. lol s7 linux,LOLs7 赛季季末冲刺挑战赛参加地址介绍
  5. 你认为微软 Win12 可以在哪些方面改进?
  6. LeetCode Daily challenge - Course Schedule
  7. LeetCode Daily challenge - K Closest Points to Origin
  8. ngrok使用/踩坑分析-http代理
  9. SSD Trim介绍
  10. project2016如何设置日历