roiwk / sse-client
服务器发送事件客户端
v1.3.0
2023-09-19 03:22 UTC
Requires
- php: >=7.0 | >=8.0
README
服务器发送事件客户端
SSE客户端
安装 安装
composer require roiwk/sse-client
使用 使用
客户端 客户端
include 'path/to/autoload.php'; $client = new Roiwk\SSEClient\Client('http://127.0.0.1:8888'); $client->addEventListener('ping', function ($data) { echo "Received ping event: $data\n"; }); $client->start();
服务端 (demo) 服务端
你可以使用一个测试服务器来方便使用此演示客户端,或者使用其他服务器。这里是一个示例
你可以使用一个测试服务器,以方便使用此演示客户端,或者使用其他服务端
php -S 127.0.0.1 server.php
高级 高级用法
参数和方法 参数与方法
更多http context选项,详见php.net
// construct usage $client = new Roiwk\SSEClient\Client('http://127.0.0.1:8888', [ 'retryInterval' => 3, 'onmessage' => function(string $data){}, 'streamContextOptions' => [ 'http' => [ 'method' => 'POST', 'header' => [ 'Content-Type: application/json', ], 'content' => json_encode(['test' => 1]), ], ], ]); // method usage $client->addEventListener('ping', function ($data) { echo "Received ping event: $data\n"; }); $client->onmessage(function(string $data) use ($client){ echo $data.PHP_EOL; $iWantClose = true; if ($iWantClose) { $client->close(); } }); $client->setRetryInterval(1); $client->start();
技巧
- 如果服务器发送的消息中没有 event 字段,则这些消息会被视为 message 事件。
- 如果服务器发送的消息中没有 event 字段,则这些消息会被视为 message 事件。
- close方法可以在回调中执行,例如:addEventListener和onmessage, onerror。
- close方法可以在回调中执行,例如:addEventListener和onmessage, onerror。