공식 패키지 · 프레임워크
Nest 방식 그대로 쓰는 NestJS 실시간 이벤트
이벤트 전송, 데코레이터를 붙인 프로바이더 메서드로 프라이빗·프레즌스 채널 인가, 서명된 웹훅 수신을 맡는 전역 모듈입니다. pusher-js, Laravel Echo, 모바일 Pusher SDK는 바꾸지 않고 그대로 연결됩니다.
@hibira-io/nestjsnpm ↗GitHub ↗
- HibiraService로 이벤트를 보내고, 채널과 프레즌스 멤버를 조회하고, 로그인한 사용자에게 보낼 수 있습니다.
- @HibiraChannel()은 Laravel의 routes/channels.php처럼 채널을 인가하고, @Broadcast()는 라우트의 반환값을 보내며, @OnHibiraWebhook()은 어느 프로바이더에서든 웹훅을 받습니다.
- 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; } }
시작하기 전에
- 앱 시크릿은 앱을 만들거나 시크릿을 교체할 때 한 번만 표시됩니다. 서버에만 두고, 브라우저나 게임 빌드에는 절대 넣지 마세요.
- 웹훅을 받으려면 main.ts에서 rawBody: true로 앱을 만드세요. 그래야 받은 바이트 그대로 서명을 검증합니다.
대시보드의 앱 키를 사용하세요. 시크릿은 서버에만 둡니다. 채널, 이벤트, 인가 엔드포인트는 Pusher와 똑같이 동작합니다. 무료 계정 만들기 →