แพ็กเกจอย่างเป็นทางการ · เฟรมเวิร์ก
อีเวนต์แบบเรียลไทม์สำหรับ NestJS ในสไตล์ของ Nest
โมดูลแบบ global ที่ส่งอีเวนต์ อนุญาตแชนเนล private และ presence ด้วยเมธอดของ provider ที่ติด decorator และรับ webhook ที่ลงนามแล้ว pusher-js, Laravel Echo และ Pusher SDK บนมือถือเชื่อมต่อได้โดยไม่ต้องแก้
@hibira-io/nestjsnpm ↗GitHub ↗
- HibiraService ส่งอีเวนต์ อ่านข้อมูลแชนเนลและสมาชิก presence และส่งถึงผู้ใช้ที่ลงชื่อเข้าใช้แล้วได้
- @HibiraChannel() อนุญาตแชนเนลแบบเดียวกับ routes/channels.php ของ Laravel, @Broadcast() ส่งค่าที่ route คืนกลับ และ @OnHibiraWebhook() รับ webhook ใน provider ใดก็ได้
- 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 ให้สร้างแอปด้วย rawBody: true ใน main.ts เพื่อให้ตรวจสอบลายเซ็นกับไบต์ที่ได้รับจริงทุกตัว
ใช้ app key จากแดชบอร์ดของคุณ ส่วน secret ให้เก็บไว้บนเซิร์ฟเวอร์เท่านั้น ช่อง อีเวนต์ และ endpoint การยืนยันสิทธิ์ทำงานเหมือนกับที่ใช้กับ Pusher ทุกประการ สร้างบัญชีฟรีของคุณ →