实战揭秘:深入解析SSE结合EventBus实现消息定向推送

        

目录

一、EventBus 简介

        1.1 EventBus 工作流程

二、SSE 基于 EventBus 实现定向推送

        2.1 使用 SSE 注意事项


        SSE(Server-Sent Events)是指服务器发送事件,这是一种浏览器 API,允许服务器端向客户端持续推送数据,而无需客户端发起请求。

        比如在社交媒体更新、新闻直播、股票市场、物联网智能设备等等方面,如下图。如果数据发生了更新,更新的数据能实时高效的推送给客户端就显的尤为重要。传统的方式是客户端需要去主动获取数据的变化,但是这种事不实时的,效率低,而且浪费资源。

        

        相比于 WebSocket,SSE 比较简单,基于 HTTP 协议,易于理解,但是 SSE 也有一个天然的不足,那就是无法定向推送数据,推送数据时广播的模式,所有的客户端都能收到。

一、EventBus 简介

        EventBus 是一个广泛应用于开发中的轻量级事件发布/订阅框架,它的核心设计理念是简化应用程序内部各组件间的通信。通过采用发布/订阅(Publish/Subscribe)设计模式,EventBus能够有效地降低组件之间的耦合度,提高代码可读性和维护性。

        1.1 EventBus 工作流程

        EventBus 的工作流程如下:

  1. 定义事件(Event):首先,需要自定义事件类,这个类可以封装任何类型的数据,比如行为数据、数据更新或者其他需要传递的信息。
  2. 注册订阅者(Subscriber Registration):使用注解 @Subscribe 标记订阅者类中的某个方法,表示该方法想要接收某种类型的事件。在初始化阶段,需要讲订阅者注册到 EventBus 中,这样 EventBus 就能知道哪些对象对何种事件感兴趣。
  3. 发布事件(Post):当有事件需要传递时,发布者通过调用 post 方法,将事件发布到 EventBus 上。
  4. 事件分发(Dispatching):EventBus 收到事件后,会根据事件类型找到所有注册了该事件类型处理方法的订阅者。根据事件订阅时指定的线程模式,EventBus 会选择合适的线程执行订阅者的方法。线程模型如下:
    1. POSTING:事件处理在发布事件所在线程中执行。
    2. MAIN:如果不在主线程,则切换到主线程执行事件处理。
    3. MAIN_ORDERED:类似MAIN,但在主线程中按照事件发布的顺序逐个执行。
    4. BACKGROUND:如果不在后台线程,则新建一个后台线程执行。
    5. ASYNC:无论在哪种线程环境下,都会在独立的线程池中异步执行。
  5. 执行订阅者方法:EventBus 通过反射调用订阅者中对应注解的方法,并将发布的事件对象作为参数传递给该方法。

二、SSE 基于 EventBus 实现定向推送

        由于 SSE 只能实现广播模式的消息推送,如果要实现推送数据到指定的客户端,就需要做一些改动,加入有这么一个场景,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超越不平凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值