takielias/laravel-sse-extended

Laravel 扩展包,用于为您的应用程序提供服务器端事件(SSE)功能。

v0.0.6 2019-11-09 05:02 UTC

This package is auto-updated.

Last update: 2024-09-09 15:41:46 UTC


README

Latest Version on Packagist Total Downloads

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。

鸣谢

许可协议

有关更多信息,请参阅许可文件