• 消息推送实现方式


    消息推送:

      使用消息推送的方法有很多,原理大致是:移动端与消息服务器保持一个长连接,一旦服务器有消息就推给客户端,客户端收到消息做相应的处理。

    消息推送的几种实现方式:

      B/S架构的系统多使用HTTP协议,所以首先来看看HTTP协议:

    HTTP协议的特点:
      列表内容
      无状态性;
      通过Internet发送请求消息和响应消息;
      使用端口接收和发送消息,默认为80端口;但是底层还是使用Socket完成。

      HTTP协议决定了服务器与客户端之间的连接方式,无法直接实现消息推送。 
      所以就有一些变相的解决方法: 双向通信和消息推送

    1.轮询:

    客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息,并关闭连接。

    优点:后端程序编写比较容易 
    缺点:请求中大半是无用的,浪费带宽和服务器资源 
    实例:适用于小型应用

    2.长轮询:

    客户端向服务器发送Ajax请求,服务器接到请求后Hold住连接,直到有新消息才返回响应信息,并关闭连接;客户端处理完响应信息后再向服务器发送新的请求。

    优点:在无消息的情况下不会频繁的请求,耗费的资源少 
    缺点:服务器Hold住连接会消耗资源,返回数据顺序无法保证,难于管理和维护 
    实例:WebQQ、Hi网页版、FaceBook IM等

    3.长连接:

    在页面中嵌入一个隐藏的jframe,将这个隐藏的iframe的src属性设置为对一个长连接的请求或者采用XRH请求,服务器端就能源源不断地往客户端输入数据。

    优点:消息即时到达,不发无用的请求;管理起来也相对方便 
    缺点:服务器维护一个长连接会增加开销 
    实例:Gmail聊天

    4.Flash Socket:

    在页面中嵌入一个使用了Socket类的Flash程序,JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示。

    优点:实现真正的即时通信,而不是伪即时 
    缺点:客户端必须安装Flash插件;非HTTP协议,无法自动穿越防火墙 
    实例:网络互动游戏

    5.WebSocket:

    WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术;依靠这种技术可以实现客户端和服务器端的长连接,双向实时通讯。

    优点:事件驱动;异步;使用WS或者WSS协议的客户端Socket;能够实现真正意义上的推送功能 
    缺点:少部分浏览器不支持,不同浏览器支持的程度和方式都不同

    参考:

      https://blog.csdn.net/wangchengiii/article/details/77895280

      https://88250.b3log.org/web-message-push

      Android 几种消息推送方案总结:https://www.cnblogs.com/Joanna-Yan/p/6241354.html

  • 相关阅读:
    肥胖儿筛选标准
    文章索引
    面向对象66原则
    [精]Xpath路径表达式
    [精]XPath入门教程
    孕产期高危因素
    “华而不实”的转盘菜单(pie menu)
    xmind用例导excel用例,然后再用python排版
    NSObject
    [self class]与[super class]
  • 原文地址:https://www.cnblogs.com/soul-wonder/p/8991893.html
Copyright © 2020-2023  润新知