[Laravel 5.3] Notification 我的理解,及 BearyChat Channel 新鲜出炉

Laravel Notification

Laravel 5.3 提供了一种全新的发送通知的方式:Notification 。我的理解是能够基于某事件(操做)触发一系列的通知任务,而通知方式由 Channel (通知渠道)接管,这样使得通知(或推送)逻辑更抽象,更易于管理和重构。php

举个例子,在用户完成订单支付后,你须要给用户发送邮件、短信提醒用户的订单已完成支付,还须要提醒仓管有新订单须要发货,若是是重要的订单可能还须要通知 Boss 刚刚有用户支付了一笔大订单,若是你的应用提供客户端,你可能还须要给用户的 iOS/Android/Mac/Windows 等 App 发送推送通知,固然也包括浏览器的通知。你可能还须要把这个通知实时广播出去,让用户的网页无刷新实时更新状态等。除此以外,像订单操做这么重要的东西,你应该要记录日志。laravel

在 5.3 以前,我是利用 Laravel 的 Model Event, Broadcast Event, Event Listener, Job, Queue 来完成这一系列通知。我以前在 laravel-bearychat 这个扩展包的文档中给了一个发送异步消息的示例git

如今 5.3 的一个 Notification 就能够囊括全部了,更重要的是代码分离。当用户完成订单支付后,只须要经过在 controller 或 model 中手动调用或者监听 Order model 的订单状态来自动调用 OrderPaidNotification 这个通知,剩下的事就都交给 OrderPaidNotification 了。github

Notification 的具体使用请参阅官方文档:https://laravel.com/docs/mast...浏览器

第三方 Channels

Laravel 5.3 内置支持 Mail, Database, Broadcast, SMS, Slack 这几种 Channel 。异步

由于有不少第三方的通知(或推送)服务,官方专门搞了个组织来维护民间的 channels ,好比 Twitter, Facebook, Telegram, Evernote, IFTTT, Apple APNs 等。async

Laravel Notification Channels 主页:http://laravel-notification-c...ide

GitHub 组织:https://github.com/laravel-no...spa

若是你在使用国内的某服务,能够考虑作成一个扩展包供大伙使用。​​​设计

兼容 Laravel 5.2 / 5.1

使用 laravel-notification-channels/backport 这个扩展包,在 Laravel 5.2 / 5.1 上也可使用 Laravel 5.3 的 Notification 。

项目主页:https://github.com/laravel-no...

BearyChat Channel

我周末作了一个 BearyChat 的通知渠道 BearyChatChannel,是在以前 Laravel-BearyChat 这个扩展包的基础上开发的,能够跟其兼容使用。

由于以前写的 Message 类和 Laravel 5.3 Notification 的 message 的设计理念高度类似,因此在新包中能够无缝迁移。其实我就是直接使用的旧的 Message 类,由于这样能够跟旧包兼容,并且这个 Message 除了发送通知还有响应 Outgoing 的功能。

正在使用 Laravel-BearyChat 的小伙伴在升级 Laravel 5.3 后可使用 Notification+BearyChatChannel 这种新方式发送机器人消息,也可使用原来的方式,互不影响。

BearyChatChannel 使用的配置文件仍是原来的 config/bearychat.php,无需从新配置。

若是你注册了 BearyChatChannel 的 ServiceProvider ,原来的 ElfSundae\BearyChat\Laravel\ServiceProvider 无关紧要。

BearyChatChannel 项目主页及文档:https://github.com/laravel-no...

欢迎 Star 欢迎 Issue

相关文章
相关标签/搜索