webSocket、Ajax轮询、长轮询(long poll)
来源:互联网 发布:打印机端口怎么看 编辑:程序博客网 时间:2024/06/05 00:32
ajax轮询
ajax轮询的原理很简单,让浏览器间隔几秒就发送一次请求,询问服务器是否有新信息。
一个简单的实例:
function showUnreadNews() { $(document).ready(function() { $.ajax({ type: "POST", url: "unread_list.php", dataType: "json", success: function(data) { alert(data); } }); }); } setInterval('showUnreadNews()',5000);//轮询执行,5000ms一次
long poll(长轮询)
原理跟 ajax轮询 差不多,都是采用轮询的方式,不过采取的是阻塞模型,也就是说,客户端发起连接后,如果没消息,就一直不返回Response给客户端,直到有消息才返回或超时。返回完之后,客户端再次建立连接,周而复始,基于事件的触发,一个事件接一个事件。
一个简单的实例:
function showUnreadNews() { $.ajax({ type: "POST", url: "unread_list.php", dataType: "json", success: function(data) { //处理返回数据 alert(data); //再次请求 showUnreadNews(); }, complete:function(XMLHttpRequest,textStatus) { if(textStatus=='timeout'){//判断是否超时 showUnreadNews();//超时,重新请求 } } }); }
缺点:Ajax轮询需要服务器有很快的处理速度与快速响应。long poll需要很高的并发,体现在同时容纳请求的能力。
WebSocket
WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。
一个简单的实例:
var ws;function WebSocketTest(){ if ("WebSocket" in window) { alert("您的浏览器支持 WebSocket!"); // 打开一个 web socket ws = new WebSocket("ws://localhost:9998/echo"); ws.onopen = function() { // Web Socket 已连接上,使用 send() 方法发送数据 ws.send("发送数据"); alert("数据发送中..."); }; ws.onmessage = function (evt) { var received_msg = evt.data; alert("数据已接收..." + received_msg); }; ws.onerror = function (evt) { //出错 alert(JSON.stringify(evt)); } ws.onclose = function() { // 关闭 websocket alert("连接已关闭..."); }; } else { // 浏览器不支持 WebSocket alert("您的浏览器不支持 WebSocket!"); }}ws.close();//关闭连接
阅读全文
0 0
- webSocket、Ajax轮询、长轮询(long poll)
- webSocket、Ajax轮询、长轮询(long poll)
- webSocket,ajax 轮询,长轮询(long poll)
- webSocket、Ajax轮询、长轮询(long poll)
- 秒懂ajax轮询、long poll 、websocket
- WebSocket 和 long poll 和 Ajax轮询 的区别
- 【转】趣话WebSocket、long poll 和 ajax轮询
- WebSocket、Http、ajax轮询、poll
- WebSocket实现长链接原理以及和ajax轮询、long poll的对比
- 实时通讯的基础,Ajax,long poll,Websocket
- WebSocket原理 与long poll、ajax轮询比较
- WebSocket原理及与 http1.0/1.1 long poll 和 ajax轮询的区别
- ajax轮询 & 长连接 & websocket
- 浅谈Websocket、Ajax轮询和长连接(long pull)
- HTML5使用websocket代替ajax轮询
- 轮询(Ajax)和(long)
- WebSocket将取代ajax?
- Ajax、Comet与Websocket
- Python 快速入门(二)
- PAT 1021
- Hive中 分区表和桶
- L24 shell基础知识(二)管道符-作业控制-shell变量-环境变量配置文件
- 开始新一论的再学习过程 python GIT jsp 深度学习
- webSocket、Ajax轮询、长轮询(long poll)
- Hive 基本操作
- 支付
- 使用HAL库、STM32CubeMX和Keil 5开发入门教程(一):点亮一盏LED灯(NUCLEO-F411RE)
- 命令行执行java程序
- 端点 boost asio
- 陕西哲尊律师事务所_向大家推荐
- android 自定义线程池ThreadPoolUtils工具类
- 简单说 通过CSS的滤镜 实现 火焰效果