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

เรียลไทม์สำหรับ Spring Boot ในสไตล์ของ Spring

สตาร์ตเตอร์ที่ฉีด Hibira client ให้ใช้งาน อนุญาตช่อง private และ presence ด้วยเมธอดของ bean ที่ใส่แอนโนเทชัน และแปลงเว็บฮุกเป็นอีเวนต์ของแอปพลิเคชัน เบราว์เซอร์และแอปเชื่อมต่อด้วย pusher-js, Laravel Echo หรือ Pusher SDK บนมือถือ โดยไม่ต้องดูแลเซิร์ฟเวอร์ WebSocket หรือ STOMP broker เอง

  • @HibiraChannel อนุญาตช่องตามผู้ใช้จาก Spring Security และสตาร์ตเตอร์มีเอนด์พอยต์ยืนยันตัวตนที่ pusher-js เรียกให้พร้อม ใช้ได้ทั้ง Spring MVC และ WebFlux
  • @HibiraBroadcast ส่งอีเวนต์ของแอปพลิเคชันไปยังเบราว์เซอร์หลังทรานแซกชันคอมมิต และเว็บฮุกจะมาถึงเป็น WebhookEvent สำหรับ @EventListener
  • client ยังส่งเข้ากล่องแจ้งเตือน ส่งพุชโนติฟิเคชัน และขออนุมัติได้ด้วย รองรับ Spring Boot 3 และ 4, Java 17 ขึ้นไป และใช้ hibira-java ได้โดยไม่ต้องมี Spring

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

  1. ติดตั้ง

    <dependency>
      <groupId>io.hibira</groupId>
      <artifactId>hibira-spring-boot-starter</artifactId>
      <version>0.1.0</version>
    </dependency>
    
    <!-- environment -->
    HIBIRA_APP_ID=YOUR_APP_ID
    HIBIRA_KEY=YOUR_APP_KEY
    HIBIRA_SECRET=YOUR_APP_SECRET
    HIBIRA_HOST=ws.hibira.io
  2. ตั้งค่า

    @Component
    class Channels {
        @HibiraChannel("private-orders.{orderId}")
        boolean order(Principal user, long orderId) {
            return orders.isOwner(orderId, user.getName());
        }
    }
    
    @HibiraBroadcast(channels = "private-orders.#{orderId}", event = "order.shipped")
    record OrderShipped(long orderId, String carrier) {}
    
    // in a @Transactional service: sent once the transaction commits
    events.publishEvent(new OrderShipped(1042, "DHL"));
    hibira.trigger("orders", "order.created", Map.of("id", 1042)); // or send directly
  3. ใช้งาน

    const pusher = new Pusher('YOUR_APP_KEY', {
      wsHost: 'ws.hibira.io',
      cluster: '',
      enabledTransports: ['ws', 'wss'],
      channelAuthorization: { endpoint: '/hibira/auth', headers: { 'X-XSRF-TOKEN': csrfToken } },
      userAuthentication: { endpoint: '/hibira/user-auth', headers: { 'X-XSRF-TOKEN': csrfToken } },
    });
    pusher.signin(); // hibira.sendToUser(...) reaches this tab
    pusher.subscribe('private-orders.1042').bind('order.shipped', (order) => console.log(order));

ก่อนเริ่ม

  • ซีเคร็ตของแอปจะแสดงเพียงครั้งเดียว ตอนสร้างแอปหรือตอนหมุนเวียนซีเคร็ต เก็บไว้บนเซิร์ฟเวอร์เท่านั้น ห้ามใส่ในเบราว์เซอร์หรือไฟล์บิลด์ของเกม
  • ถ้าใช้ Spring Security ให้ส่ง CSRF token จากเบราว์เซอร์ (หรือยกเว้น /hibira/auth และ /hibira/user-auth) และให้ /hibira/webhooks ผ่านได้โดยไม่ต้องมีเซสชันหรือ CSRF token เพราะเอนด์พอยต์ตรวจลายเซ็นเอง
  • ในแพ็กเกจ Free ให้เพิ่มทุก origin ที่โหลดหน้าเว็บของคุณลงใน allowed origins ของแอป (ระหว่างพัฒนาใช้ http://localhost:8080 แล้วตามด้วยโดเมนของคุณ) ส่วน "*" ต้องใช้แพ็กเกจแบบชำระเงิน

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