即时通信(IM)

即时通信

即时通讯(Instant Messaging)是一种基于互联网的即时交流消息的业务。

类型:

  • 在线push
    • 适用:web页面 和 App
    • 自己构建IM服务器
      • 使用WebSocket
      • 采用成熟的框架方案Socket.IO
      • 对于App还可自己封装socket
    • 使用第三方IM服务商提供的服务
  • 离线push
    • 适用:App
    • 对于iOS,使用APNs
    • 对于andorid,使用FCM(国外)或第三方IM服务商提供的服务

提供第三方IM服务的服务商有:网易云信,融云,环信,LeanCloud

  1. 需求场景

    服务端需要主动推送消息给客户端,例如

    • 用户下了订单,需要在运营管理后台向运营人员推送新订单通知
    • 用户A关注了用户B,系统需要向用户B推送提示消息
    • 即时聊天
  2. 传统的推送实现

    HTTP/1.x 不支持服务器主动推送,只能在客户端发起请求后做出回应。 (HTTP/2支持服务器主动推送,但HTTP/2 还未全面实施)

    • 轮询

      轮询是在特定的的时间间隔(如每1秒),由客户端对服务器发出HTTP请求,了解服务器有没有新的信息,然后由服务器告知有无新数据或返回最新的数据给客户端。

      缺点:

      • 效率低下,浪费资源

        必须不停连接,或者连接始终打开,但传输HTTP请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。

      图示

      在这里插入图片描述

    • Comet (基于长连接)

      • 长轮询 长轮询是在打开一条连接以后保持,等待服务器推送来数据再关闭的方式。

      • iframe流 iframe流方式是在页面中插入一个隐藏的iframe,利用其src属性在服务器和客户端之间创建一条长链接,服务器向iframe传输数据(通常是HTML,内有负责插入信息的javascript),来实时更新页面。

        缺点:

        依然需要反复发出请求,而且长连接也会消耗服务器资源。

      图示

      在这里插入图片描述

    总结
    1.基于http协议,使用轮询的方式。
        优点: 通用、简单,不用使用其他额外的技术。
        缺点: 占带宽,占服务器资源(不断建立、断开连接,对服务器都是一种资源开销)
    2.基于http协议1.1版本,使用长连接轮询。
    一样存在上面的问题。
    3.基于WebSocket协议,实现实时推送。
    4.http/2.0,未来的技术。
        备注:
        无论是普通轮询还是长连接轮询,都是属于被动的方式。
        WebSocket和http/2.0是属于主动推送的方式。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值