แพ็กเกจอย่างเป็นทางการ · เฟรมเวิร์ก

อีเวนต์แบบเรียลไทม์สำหรับ NestJS ในสไตล์ของ Nest

โมดูลแบบ global ที่ส่งอีเวนต์ อนุญาตแชนเนล private และ presence ด้วยเมธอดของ provider ที่ติด decorator และรับ webhook ที่ลงนามแล้ว pusher-js, Laravel Echo และ Pusher SDK บนมือถือเชื่อมต่อได้โดยไม่ต้องแก้

  • HibiraService ส่งอีเวนต์ อ่านข้อมูลแชนเนลและสมาชิก presence และส่งถึงผู้ใช้ที่ลงชื่อเข้าใช้แล้วได้
  • @HibiraChannel() อนุญาตแชนเนลแบบเดียวกับ routes/channels.php ของ Laravel, @Broadcast() ส่งค่าที่ route คืนกลับ และ @OnHibiraWebhook() รับ webhook ใน provider ใดก็ได้
  • stream() ส่งผลลัพธ์จาก LLM ไปยังแชนเนล, requestApproval() ขอให้คนอนุมัติก่อนโค้ดทำงาน และ HibiraPushService ส่งการแจ้งเตือนแบบพุช รองรับ Nest 10 ถึง 12 บน Express หรือ Fastify

ลงชื่อเข้าใช้เพื่อดูโค้ดตัวอย่างเหล่านี้พร้อมโฮสต์คลัสเตอร์ของคุณเอง ลงชื่อเข้าใช้

  1. ติดตั้ง

    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. ตั้งค่า

    // 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. ใช้งาน

    @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 ให้สร้างแอปด้วย rawBody: true ใน main.ts เพื่อให้ตรวจสอบลายเซ็นกับไบต์ที่ได้รับจริงทุกตัว

ใช้ app key จากแดชบอร์ดของคุณ ส่วน secret ให้เก็บไว้บนเซิร์ฟเวอร์เท่านั้น ช่อง อีเวนต์ และ endpoint การยืนยันสิทธิ์ทำงานเหมือนกับที่ใช้กับ Pusher ทุกประการ สร้างบัญชีฟรีของคุณ →