Gói chính thức · Framework

Sự kiện thời gian thực cho NestJS, theo cách của Nest

Một module global để gửi sự kiện, cấp quyền kênh private và presence bằng các phương thức provider có decorator, và nhận webhook đã ký. pusher-js, Laravel Echo và các Pusher SDK di động kết nối mà không cần sửa.

  • HibiraService gửi sự kiện, đọc kênh và thành viên presence, và gửi tới người dùng đã đăng nhập.
  • @HibiraChannel() cấp quyền kênh giống routes/channels.php của Laravel, @Broadcast() phát kết quả mà route trả về, và @OnHibiraWebhook() nhận webhook trong bất kỳ provider nào.
  • stream() gửi đầu ra LLM tới một kênh, requestApproval() xin người phê duyệt trước khi code hành động, và HibiraPushService gửi thông báo đẩy. Nest 10 đến 12, trên Express hoặc Fastify.

Đăng nhập để xem các đoạn mã này với host cụm của riêng bạn. Đăng nhập

  1. Cài đặt

    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
  2. Thiết lập

    // 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 {}
  3. Sử dụng

    @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;
      }
    }

Trước khi bắt đầu

  • Secret của ứng dụng chỉ hiện một lần, khi bạn tạo ứng dụng hoặc xoay vòng secret. Hãy giữ nó trên máy chủ, không bao giờ đưa vào trình duyệt hay bản build game.
  • Để nhận webhook, hãy tạo ứng dụng với rawBody: true trong main.ts, để chữ ký được kiểm tra trên đúng các byte nhận được.

Dùng app key từ bảng điều khiển; secret chỉ để trên máy chủ của bạn. Kênh, sự kiện và endpoint xác thực hoạt động y như với Pusher. Tạo tài khoản miễn phí →