nijens/sse

PHP 中的 Server Sent Events 服务器实现。

1.0.0 2019-11-07 14:00 UTC

This package is auto-updated.

Last update: 2024-09-10 17:07:33 UTC


README

Latest version on Packagist Software License Build Status

PHP 中的 Server-Sent Events 服务器实现。

有关 SSE 的更多信息,请参阅 MDN 文档

安装

打开命令控制台,进入您的项目目录并执行

composer require nijens/sse

使用方法

SSE 库通过两个主要组件工作

  1. 一个事件发布者实现(例如,DateTimeEventPublisher):提供要发送的事件
  2. SseKernel:负责与事件发布者检查是否有新事件,并将事件发送到客户端(浏览器)

以下示例展示了如何使用事件发布者初始化 SseKernel

<?php

require __DIR__.'/../vendor/autoload.php';

use Nijens\Sse\Event\DateTimeEventPublisher;
use Nijens\Sse\SseKernel;
use Symfony\Component\HttpFoundation\Request;

$eventPublisher = new DateTimeEventPublisher('date-time');

$kernel = new SseKernel($eventPublisher);

$request = Request::createFromGlobals();
$response = $kernel->handle($request);

$response->send();

在 Symfony 控制器中集成 SseKernel

当您使用 Symfony 框架 创建您的应用程序时,您仍然可以在控制器中使用 SseKernel 实现。

以下示例展示了在控制器中实现的 SseKernel 的一个简单示例

<?php

namespace App\Controller;

use Nijens\Sse\Event\DateTimeEventPublisher;
use Nijens\Sse\SseKernel;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\StreamedResponse;

class SseController
{
    public function __invoke(Request $request): StreamedResponse
    {
        $eventPublisher = new DateTimeEventPublisher('date-time');

        $kernel = new SseKernel($eventPublisher);

        return $kernel->handle($request);
    }
}

可选地,您可以使用 依赖注入 将内核和事件发布者改为服务。

创建您自己的事件发布者

此库提供了以下事件发布者

  • DateTimeEventPublisher:一个有效示例,提供当前时间作为事件
  • TransportEventPublisher:一个实现传输的事件发布者实现(例如,MySQL 数据库实现)

您可以通过实现 EventPublisherInterfaceConnectedClientEventPublisherInterface 来创建自己的事件发布者实现。

如果您只想从数据库或其他存储中读取事件,建议为 TransportEventPublisher 创建一个 TransportInterface 实现。

致谢和认可

还可以查看参与此项目的 贡献者列表

许可证

SSE 软件包使用 MIT 许可证授权。请参阅 LICENSE 文件 以获取详细信息。