使用事件流实现的服务端发送事件的PHP版本

1.1.0 2023-10-31 20:22 UTC

README

Screenshot

PHP中的服务器端发送事件

Coverage Maintainability CGL Tests Supported PHP Versions

使用PHP编写的服务器端实现服务器端发送事件(SSE)。它可以用来向客户端发送事件流。所有的事件驱动特性都高度可定制,甚至可以使用自定义发射器。该库还提供了一个PSR-7兼容的事件流实现。

🚀 功能

🔥 安装

Packagist Packagist Downloads

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,负责处理所有传递的数据。

目前可用的以下发射器实现

事件

数据可以通过以下两种方式通过活动事件流发送

  1. 通过调用 Stream\EventStream::sendEvent() 发送预构建的事件。
  2. 通过调用 Stream\EventStream::sendMessage() 发送普通消息。

可以通过实现 Event\Event 接口生成事件。每个事件都必须提供事件名和可序列化为JSON的事件数据。

🧑‍💻 贡献

请参阅 CONTRIBUTING.md

⭐ 许可证

本项目采用 GNU通用公共许可证3.0(或更高版本) 许可。