takielias / laravel-sse-extended
Laravel 扩展包,用于为您的应用程序提供服务器端事件(SSE)功能。
v0.0.6
2019-11-09 05:02 UTC
Requires
- php: ^7.0
- illuminate/support: ~6
This package is auto-updated.
Last update: 2024-09-09 15:41:46 UTC
README
Laravel SSE 扩展
Laravel 扩展包,用于为您的应用程序提供服务器端事件(SSE)功能。您可以使用此包在用户无需刷新页面的情况下向他们显示即时通知。
要求
- PHP >= 7
- Laravel 5/6
安装
通过 Composer
$ composer require takielias/laravel-sse-extended
Laravel < 5.5
将服务提供者在 config/app.php
文件的 providers
部分
takielias\SSE\ServiceProvider::class,
将外观添加到 config/app.php
文件的 aliases
部分
'SSE' => takielias\SSE\Facades\SSEFacade::class,
运行以下命令发布包的配置、迁移和视图文件
$ php artisan vendor:publish --provider="takielias\SSE\ServiceProvider"
运行 php artisan migrate
创建 sselogs
表。
设置 SSE
在 config/sse.php
文件中设置配置选项,然后在您的视图/布局文件中添加以下内容
@include('sse::view')
用法
语法
/** * @param string $message : notification message * @param string $type : alert, success, error, warning, info * @param string $event : Type of event such as "EmailSent", "UserLoggedIn", etc */ SSEFacade::notify($message, $type = 'info', $event = 'message')
要在屏幕上显示弹出通知,在您的控制器/事件类中,您可以这样做
use takielias\SSE\Facades\SSEFacade; public function myMethod() { SSEFacade::notify('hello world....'); // or via helper sse_notify('hi there'); }
自定义通知库
默认情况下,该包使用 noty 显示通知。您可以通过修改 resources/views/vendor/sse/view.blade.php
文件中的代码来自定义此功能。
自定义 SSE 事件
默认情况下,包使用 message
事件类型进行流式传输响应
SSEFacade::notify($message, $type = 'info', $event = 'message')
注意 $event = 'message'
。您可以自定义此功能,例如,您想使用 UserLoggedIn
作为 SSE 事件类型
use takielias\SSE\Facades\SSEFacade; public function myMethod() { SSEFacade::notify('hello world....', 'info', 'UserLoggedIn'); // or via helper sse_notify('hi there', 'info', 'UserLoggedIn'); }
然后您需要在您的视图中自行处理此事件,如下所示
<script> var es = new EventSource("{{route('__sse_stream__')}}"); es.addEventListener("UserLoggedIn", function (e) { var data = JSON.parse(e.data); alert(data.message); }, false); </script>
注意
服务器端事件 技术消耗服务器资源,因此请谨慎使用,或者最好使用 Web Sockets。
鸣谢
许可协议
有关更多信息,请参阅许可文件。