大家经常浏览一些网站时候会弹出在线聊天窗口 , 点击后可以和客服人员聊天 , 非常方便 , 之前也做过一款简单的在线聊天工具 , 下面就说说在线聊天通讯的主要几种技术手段 。
1、Ajax在html5之前 , 这个是很主流的web通讯方式 , 通过ajax不断请求服务器获取数据 , 分为轮询和长轮询 , 主要写法上有点区别 。
轮询
轮询是一种“拉”取信息的工作模式 , 设置一个定时器 , 定时询问服务器是否有信息 , 每次建立连接传输数据之后 , 链接会关闭 , 演示代码如下:
var polling = function(url, type, data){ var xhr = new XMLHttpRequest(), type = type || "GET", data = https://www.isolves.com/it/cxkf/yy/js/2019-10-09/data || null; xhr.onreadystatechange = function(){ if(xhr.readyState == 4) { receive(xhr.responseText); xhr.onreadystatechange = null; } }; xhr.open(type, url, true); xhr.send(type == "GET" ? null : data);};//定时器var timer = setInterval(function(){ polling();}, 1000);长轮询
长轮询其实也没啥特殊的地方 , 就是在xhr对象关闭连接的时候马上又发起请求 , 让连接一直持续进行 , 演示代码如下:
var longPoll = function(type, url){ var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ // 状态为 4 , 数据传输完毕 , 重新递归连接 if(xhr.readyState == 4) { receive(xhr.responseText); xhr.onreadystatechange = null; longPoll(type, url); } }; xhr.open(type, url, true); xhr.send();}2、websocketwebsocket是前端一个神器 , ajax用了这么久了 , 相关技术也是很成熟 , 不过实现数据的拉取非常不划算 。
ajax是基于HTTP
推荐阅读
- 常见的Web安全漏洞及测试方法介绍
- Webview加载H5优化小记
- 告诉你PC不能通过二层交换机实现跨网段通信的小秘密:你很难想到
- 什么是Web应用程序防火墙WAF?
- 手机实现远程登录电脑
- 实现HTML5网站中常见的拖拽上传文件
- Windows|Win11能原生双系统了:Windows 365云电脑实现深度集成
- 几种处理JavaScript异步操作的办法
- Java基于Solr海量数据搜索,搜索引擎的实现
- 纯JavaScript实现的调用设备摄像头并拍照的功能