eliashaeussler / sse
使用事件流实现的服务端发送事件的PHP版本
1.1.0
2023-10-31 20:22 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- php-http/discovery: ^1.18
- psr/http-factory: ^1.0
- psr/http-message: ^1.0 || ^2.0
Requires (Dev)
- armin/editorconfig-cli: ^1.6
- eliashaeussler/php-cs-fixer-config: ^1.2
- eliashaeussler/phpstan-config: ^2.1
- eliashaeussler/rector-config: ^1.6
- ergebnis/composer-normalize: ^2.31
- nyholm/psr7: ^1.8
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-symfony: ^1.3
- phpunit/phpunit: ^10.2
This package is auto-updated.
Last update: 2024-09-20 20:09:22 UTC
README
PHP中的服务器端发送事件
使用PHP编写的服务器端实现服务器端发送事件(SSE)。它可以用来向客户端发送事件流。所有的事件驱动特性都高度可定制,甚至可以使用自定义发射器。该库还提供了一个PSR-7兼容的事件流实现。
🚀 功能
- 服务器端实现服务器端发送事件(SSE)
- 通过接口实现高度可定制
- 自发射事件流
- PSR-7兼容的事件流
🔥 安装
composer require eliashaeussler/sse
⚡ 使用方法
use EliasHaeussler\SSE; // Open event stream $eventStream = SSE\Stream\SelfEmittingEventStream::create(); $eventStream->open(); // Send event $eventStream->sendEvent(new MyCustomEvent($eventData)); // Send message $eventStream->sendMessage('myCustomEvent', $eventData); // Close event stream $eventStream->close();
🎢 架构
事件流
所有事件都通过 事件流 发送。该库提供了一个接口 Stream\EventStream
,在整个事件流过程中抽象了所有流部分。
目前可用的以下事件流实现
Stream\SelfEmittingEventStream
将所有流数据发送到一个 发射器,该发射器负责将数据写入一个活动资源。这在大多数情况下是最佳解决方案。Stream\Psr7EventStream
在整个事件流过程中创建一个PSR-7兼容的响应。请注意,此响应不会实时发出。
发射器
所有自发射事件流的数据都交给一个指定的发射器。该库提供了一个接口 Stream\Emitter\Emitter
,负责处理所有传递的数据。
目前可用的以下发射器实现
Stream\Emitter\RealtimeEmitter
直接将所有流数据写入活动的标准输出。
事件
数据可以通过以下两种方式通过活动事件流发送
- 通过调用
Stream\EventStream::sendEvent()
发送预构建的事件。 - 通过调用
Stream\EventStream::sendMessage()
发送普通消息。
可以通过实现 Event\Event
接口生成事件。每个事件都必须提供事件名和可序列化为JSON的事件数据。
🧑💻 贡献
请参阅 CONTRIBUTING.md
。
⭐ 许可证
本项目采用 GNU通用公共许可证3.0(或更高版本) 许可。