官方包 · 框架
用 Nest 的方式为 NestJS 加上实时事件
一个全局模块:发布事件、用带装饰器的 provider 方法授权私有和 presence 频道,并接收已签名的 Webhook。pusher-js、Laravel Echo 和移动端 Pusher SDK 无需修改即可连接。
@hibira-io/nestjsnpm ↗GitHub ↗
- HibiraService 发布事件、查询频道和在线成员,也能发送给已登录的用户。
- @HibiraChannel() 像 Laravel 的 routes/channels.php 一样授权频道,@Broadcast() 发布路由返回的结果,@OnHibiraWebhook() 在任意 provider 中接收 Webhook。
- stream() 把 LLM 输出发送到频道,requestApproval() 在代码执行操作前先请人审批,HibiraPushService 发送推送通知。支持 Nest 10 到 12,Express 或 Fastify 均可。
登录后,示例代码会自动填入您的集群主机。 登录
安装
npm install @hibira-io/nestjs # .env HIBIRA_APP_ID=YOUR_APP_ID HIBIRA_KEY=YOUR_APP_KEY HIBIRA_SECRET=YOUR_APP_SECRET HIBIRA_HOST=ws.hibira.io配置
// app.module.ts import { Module } from '@nestjs/common'; import { HibiraModule } from '@hibira-io/nestjs'; import { JwtAuthGuard } from './auth/jwt-auth.guard'; @Module({ imports: [ HibiraModule.forRoot({ auth: { guards: [JwtAuthGuard] }, // POST /hibira/auth webhooks: true, // POST /hibira/webhook }), ], }) export class AppModule {}使用
@Injectable() export class OrdersService { constructor(private readonly hibira: HibiraService) {} async ship(order: Order) { await this.hibira.trigger(`private-orders.${order.id}`, 'order.shipped', { id: order.id }); } @HibiraChannel('private-orders.{orderId}') async canSeeOrder(user: User, { orderId }: { orderId: string }) { return (await this.find(orderId))?.customerId === user.id; } }
开始之前
- 应用密钥只会在创建应用或轮换密钥时显示一次。请只放在服务器上,不要放进浏览器或游戏的构建包。
- 要接收 Webhook,请在 main.ts 中以 rawBody: true 创建应用,这样签名会用收到的原始字节来校验。
请使用控制台中应用的 Key;Secret 只放在你的服务器上。频道、事件与授权端点的用法与 Pusher 完全相同。 免费创建账号 →