lusito / tiny-sse
TinySSE 是一个用于发布服务器发送事件(Server Sent Events,简称 EventSource)的小助手。
Requires
- php: ^7.1.0
This package is auto-updated.
Last update: 2024-06-22 06:33:07 UTC
README
TinySSE
TinySSE 是一个小助手,用于发布 服务器发送事件(Server Sent Events,简称 EventSource)。
为什么选择 TinySSE?
- 它是最小化的。
- 它包含你需要的一切
- 发送所有必要的头信息。
- 向客户端(浏览器)发送事件和评论
- 检测断开连接。
- TinySSE 采用 zlib/png 许可协议发布。
友情提示:PHP 不是 SSE 或其他推送式通信的理想语言,因为它会为每个请求使用一个线程。因此,你应该将其使用限制在最小范围内(例如,仅针对有限数量的用户)。
示例
一个简单的示例
use Lusito\TinySSE; $lastState = null; $sse = new TinySSE(); do { $state = getState(); if(statesDiffer($state, $lastState)) { $sse->sendEvent(json_encode($state, JSON_UNESCAPED_SLASHES), 'update'); $lastState = $state; } } while($sse->sleep());
设置
通过 composer 安装
composer require lusito/tiny-sse
在您的 php 脚本中包含自动加载器,除非您已经这样做
require __DIR__ . '/vendor/autoload.php';
文档
构造函数
构造函数接受一个可选参数:在将注释刷新以保持连接活跃之前,要计算多少帧(sleep 调用)的数字(int,默认为 10)。
在调用 sleep() 并发送任何内容这么多次数之后,将发送一个 'noop' 注释。
构造函数中会设置以下头信息
- Content-Type: text/event-stream
- Cache-Control: no-cache
- Connection: keep-alive
- X-Accel-Buffering: no
sleep()
sleep() 方法接受两个可选参数
- 要睡眠的秒数(数字,默认为 1)
- 秒数限制。
如果您将 ignore_user_abort 设置为 true,并且连接已断开,则此方法将返回 false。否则,它将调用 set_time_limit() 并指定时间限制,睡眠指定的秒数,然后返回 true。
sendComment()
此方法接受一个字符串参数,作为注释发送。它可以包含换行符。
注释将被写入输出并刷新。
sendEvent()
此方法接受 3 个参数
- 作为数据发送的字符串参数。它可以包含换行符。
- 可选的事件名称。不允许换行符。
- 可选的 id。不允许换行符。
此事件将被写入输出并刷新。
报告问题
有什么地方不太对劲?您需要尚未实现的功能?请检查 问题跟踪器,如果您的問題尚未列出,请添加一个新的问题。请尽量提供详细的问题描述,包括重现步骤。
贡献
太棒了!如果您想为新功能做出贡献或提交错误修复,请 Fork 这个仓库并发送一个 pull request。请确保在提交之前所有单元测试都通过,并在引入新功能的情况下添加新的单元测试。
许可
tiny-sse 已经在 zlib/libpng 许可协议下发布,这意味着您可以在商业和非商业项目中免费使用它,无需附加任何条件。感谢您的贡献,但不是强制性的。