roiwk/sse-client

服务器发送事件客户端

v1.3.0 2023-09-19 03:22 UTC

This package is auto-updated.

Last update: 2024-09-22 04:12:49 UTC


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) 服务端

你可以使用一个测试服务器来方便使用此演示客户端,或者使用其他服务器。这里是一个示例
你可以使用一个测试服务器,以方便使用此演示客户端,或者使用其他服务端

server.php

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();

技巧

  1. 如果服务器发送的消息中没有 event 字段,则这些消息会被视为 message 事件。
  2. 如果服务器发送的消息中没有 event 字段,则这些消息会被视为 message 事件。
  1. close方法可以在回调中执行,例如:addEventListener和onmessage, onerror。
  2. close方法可以在回调中执行,例如:addEventListener和onmessage, onerror。