nijens / sse
PHP 中的 Server Sent Events 服务器实现。
1.0.0
2019-11-07 14:00 UTC
Requires
- php: ^7.2.9
- ramsey/uuid: ^3.8
- symfony/http-foundation: ^4.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.14
- phpunit/phpunit: ^8.1
- symfony/phpunit-bridge: ^4.3
This package is auto-updated.
Last update: 2024-09-10 17:07:33 UTC
README
PHP 中的 Server-Sent Events 服务器实现。
有关 SSE 的更多信息,请参阅 MDN 文档。
安装
打开命令控制台,进入您的项目目录并执行
composer require nijens/sse
使用方法
SSE 库通过两个主要组件工作
- 一个事件发布者实现(例如,
DateTimeEventPublisher
):提供要发送的事件 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 数据库实现)
您可以通过实现 EventPublisherInterface
或 ConnectedClientEventPublisherInterface
来创建自己的事件发布者实现。
如果您只想从数据库或其他存储中读取事件,建议为 TransportEventPublisher
创建一个 TransportInterface
实现。
致谢和认可
- 作者:Niels Nijens
还可以查看参与此项目的 贡献者列表。
许可证
SSE 软件包使用 MIT 许可证授权。请参阅 LICENSE 文件 以获取详细信息。