exinfinite/server-event

server send event

1.1.2 2020-11-06 03:50 UTC

This package is auto-updated.

Last update: 2024-05-06 11:53:10 UTC


README

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

Server Send Event

Server Send Event 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);

執行結果

執行結果