imi v2.1.45 发布,支持优雅的 SSE 服务端推送功能,文档:https://doc.imiphp.com/v2.1/components/httpserver/sse.html
SSE 介绍
SSE 是一种服务端主动向客户端(浏览器)推送数据的技术。
大名鼎鼎的 ChatGPT 的 API 接口就用了这项技术,实现逐字返回的打字机效果。
服务端向客户端发送一个响应头:Content-Type: text/event-stream
然后服务端按如下格式发送数据:
: 注释
data: 数据n
event: 事件n
id: id值n
retry: 重试时间间隔,单位:秒nn
其中每一行都是非必传项,每一行必须以
n
结尾
nn
代表一次推送的结束
环境支持
名称 | 是否支持 | 备注 |
---|---|---|
Swoole | ✔ | |
Workerman | ✔ | |
php-fpm | ✔ | |
RoadRunner | ✖ | 暂时无法实现 |
使用示例
use ImiServerHttpMessageEmitterSseEmitter;
use ImiServerHttpMessageEmitterSseMessageEvent;
/**
* SSE.
*
* @Action
*/
public function sse(): void
{
$this->response->setResponseBodyEmitter(new class() extends SseEmitter {
protected function task(): void
{
$handler = $this->getHandler();
// 模拟推送数据
foreach (range(1, 100) as $i)
{
// 推送数据
$handler->send((string) new SseMessageEvent((string) $i));
usleep(10000);
}
}
});
}
SseMessageEvent
ImiServerHttpMessageEmitterSseMessageEvent
类是 SSE 推送事件类,构造方法参数如下:
public function __construct(
?string $data = null,
?string $event = null,
?string $id = null,
?int $retry = null,
?string $comment = null
)
关于 imi
imi 是一款支持长连接微服务分布式的 PHP 开发框架,它可以运行在 PHP-FPM
、Swoole
、Workerman
和 RoadRunner
等多种容器环境下。
imi 提供了丰富的基础功能:MySQL
、PostgreSQL
、Redis
、超强超好用的自研 ORM
、连接池
、Web Api
、Web MVC
、WebSocket
、TCP Server
、UDP Server
、HTTP2
、MQTT
、gRPC
、容器化(Container)
、依赖注入
、Aop
、事件
、异步(Async)
、缓存(Cache)
、命令行(Command)
、配置化(Config)
、上下文(Context)
、定时任务(Cron)
、门面(Facade)
、验证器(Validate)
、锁(Lock)
、日志(Log)
、定时器(Timer)
、权限控制
、消息队列(RabbitMQ、Kafka、Redis)
、Swagger
、Hprose
、宏(Macro)
、限流
、共享内存
、Smarty
、雪花算法发号器(Snowflake)
、Workerman Gateway
、InfluxDB
和 TDengine
等组件。
同时,imi 还提供了微服务相关支持:Nacos 配置中心
、etcd 配置中心
、Nacos 服务注册
、Nacos 服务发现
、Swoole Tracker
、Zipkin
、Jaeger
、Prometheus
、InfluxDB 服务指标监控
、TDengine 服务指标监控
和 负载均衡
等组件。
除此之外,imi 还提供了管理后台开发骨架 imi-admin。
imi 框架自 2018 年 6 月 21 日首次发布以来,已经稳定运行在许多项目中,例如文旅电商平台、物联网充电云平台、停车云平台、支付微服务、短信微服务、钱包微服务、卡牌游戏服务端和数据迁移服务(虎扑)等项目。
- 官网:https://www.imiphp.com/
- Github:https://github.com/imiphp/imi
- Gitee:https://gitee.com/yurunsoft/IMI
- 技术支持:https://doc.imiphp.com/v2.1/base/support.html
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net