exinfinite/server-event

服务器发送事件

1.1.2 2020-11-06 03:50 UTC

This package is auto-updated.

Last update: 2024-09-06 12:26:45 UTC


README

Packagist PHP Version Support GitHub release (latest SemVer) Packagist Version Packagist Downloads GitHub

服务器发送事件

服务器发送事件 MDN 参考

安装

composer require exinfinite/server-event

使用

后端事件源 source.php

header("Cache-Control: no-cache");
header("Content-Type: text/event-stream");
use Exinfinite\ServerEvent;
$count = 1;
$interval = 30;
ServerEvent::setEvent('userconnect');//event type
while (true) {
    ServerEvent::setId($count);//event id
    ServerEvent::shot("Server Sent Event round {$count}");//event data
    if($count == '5'){
        ServerEvent::shot("connection closed");
        ServerEvent::close();//關閉連線
    }
    $count++;
    sleep($interval);
}

前端接收 js

var es = new EventSource("source.php");
es.addEventListener('userconnect', function(e) {//ServerEvent::setEvent('userconnect')
    console.log(`Receive: ${e.data}`);
}, false);
es.addEventListener('error', function(e) {//ServerEvent::close()時觸發
    es.close();
}, false);

执行结果

執行結果