[Laravel 5.3] Notification 个人理解,及 BearyChat Channel 新鲜出炉

news/2024/7/3 11:38:24

Laravel Notification

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

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

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

现在 5.3 的一个 Notification 就可以囊括所有了,更重要的是代码分离。当用户完成订单支付后,只需要通过在 controller 或 model 中手动调用或者监听 Order model 的订单状态来自动调用 OrderPaidNotification 这个通知,剩下的事就都交给 OrderPaidNotification 了。

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

第三方 Channels

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

因为有很多第三方的通知(或推送)服务,官方专门搞了个组织来维护民间的 channels ,比如 Twitter, Facebook, Telegram, Evernote, IFTTT, Apple APNs 等。

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

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

如果你在使用国内的某服务,可以考虑做成一个扩展包供大伙使用。​​​

兼容 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


http://www.niftyadmin.cn/n/3075182.html

相关文章

20210107WEB渗透学习之信息收集

欢迎大家一起来Hacking水友攻防实验室学习,渗透测试,代码审计,免杀逆向,实战分享,靶场靶机,求关注 其实一早就开始想写这个了,今天实在是很累,最近期末复习也很紧张,毕设…

Lync 小技巧-55-Lync 客户端正常显示手机号码

有偿提供培训、项目规划、实施、运维、排错:《Skype for Business 2015 项目实战》/ 《跟菜鸟学Cisco UC部署实战》/ 《大企业云桌面部署实战》咨询QQ: 3313395633场景:在Lync客户端上面,正常应该显示公司、部门、职位、手机、座同 、分机、经…

20201229攻防世界WEB高手区题目一题多解全教程通关(1-6)

欢迎大家一起来Hacking水友攻防实验室学习,渗透测试,代码审计,免杀逆向,实战分享,靶场靶机,求关注 目录 001baby_web 002Trainng WWW Robots 003Web_php_unserialize 004php_rce 005Web_php_include W…

XMLDocument 方法中实现post发送消息

XMLDocument 方法中实现post发送消息 转载于:https://www.cnblogs.com/onroad2016/p/5829240.html

20210108攻防世界WEB高手区题目一题多解全教程通关(7-12)

欢迎大家一起来Hacking水友攻防实验室学习,渗透测试,代码审计,免杀逆向,实战分享,靶场靶机,求关注 目录 007ics-06 008warmup warmup第一种解法 warmup第二种解法 009NewsCenter 010NaNNaNNaNNaN-Bat…

修复CefSharp浏览器组件中文输入Bug

概述 最近在win10上开发wpf应用,需要将CefSharp中wpf版本的浏览器组件(版本号v51.0.0)嵌入到应用中,但是发现不支持中文输入,GitHub上有这个问题的描述,参照其提到的方法可以解决,但是候选词窗口…

20200109攻防世界WEB高手区题目一题多解全教程通关(13-18)

欢迎大家一起来Hacking水友攻防实验室学习,渗透测试,代码审计,免杀逆向,实战分享,靶场靶机,求关注 目录 013unserialize3 014upload1 015Web_python_template_injection 016 easytornado 017shrine 0…

为什么要用java重写logstash

为什么要用java重写logstash 写之前这里先打个广告,java 版本的logstash已经开源,git地址 https://github.com/dtstack ;再放个招聘信息 https://m.zhipin.com/weijd/v2/job/de2292afc38d32fe1XV73t25EFU~?date820180609&sidself_jd&…