zoukankan      html  css  js  c++  java
  • 服务端推送通信技术及其优劣势

    服务端推送技术包括:

    1、Ajax 轮询

    2、Ajax 长轮询

    3、WebSocket

    一、Ajax 轮询

    利用 XHR,通过 setInterval 定时向后端发送请求

    1、优点:实现简单

    2、缺点:数据同步不及时,增加后端处理压力

    3、场景:适用于对消息及时性要求不高且服务器资源充足的开发

    setInterval(function() {
      $.ajax({
        url: 'https://www.baidu.com/',
        success: function() {
          //success code
        }
      });
    }, 3000);

    二、Ajax长轮询

    在 Ajax 轮询的基础上做的改进,在后端数据没有更新的时不再返回空响应,而且后端一直保存连接,直到后端有数据变化,则相应请求并且关闭连接,前端收到数据后,再次向后端发起请求,并处理刚刚收到的数据

    1、优点:通信及时,服务端资源消耗低

    2、缺点:请求交替时消息会延迟

    3、场景:扫码登录

    function async () {
      $.ajax({
        url: 'http://www.baidu.com/',
        success: function() {
          async ();
          //code from here
        } 
      });
    }

    三、WebSocket

    WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议,允许服务端主动向客户端发送数据,浏览器和服务器只需要完成一次握手,就可以创建持久性的连接,并进行双向数据传输

    1、优点:通信及时,采用双工的通信模式

    2、缺点:服务端资源消耗高

    3、场景:对及时性要求高,如股票系统

    function WebSocketTest() {
      if ("WebSocket" in window) {
        alert("您的浏览器支持 WebSocket!");
    
        // 打开一个 web socket
        var 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("数据已接收...");
        };
    
        ws.onclose = function() {
          // 关闭 websocket
          alert("连接已关闭...");
        };
      } else {
        // 浏览器不支持 WebSocket
        alert("您的浏览器不支持 WebSocket!");
      }
    }
  • 相关阅读:
    HA 高可用集群概述及其原理解析
    iOS 平台上常见的安装包有三种,deb、ipa 和 pxl
    爪洼人的第五天
    Java基础数组篇
    猛男学Java的第四天
    猛男学习JAVA的第三个日子
    猛男学习Java的第二天
    【笔记】ubuntu12.04 添加启动器图标的办法(解决启动器图标消失的问题)
    【笔记】Ubuntu12.04键盘图标(输入法图标)不见后重新显示方法
    【笔记】ubuntu下手动更新firefox浏览器
  • 原文地址:https://www.cnblogs.com/Leophen/p/11564755.html
Copyright © 2011-2022 走看看