공식 패키지 · 프레임워크

Spring 방식 그대로 쓰는 Spring Boot 실시간 기능

Hibira 클라이언트를 주입하고, 애너테이션을 단 빈 메서드로 private·presence 채널을 인가하며, 웹훅을 애플리케이션 이벤트로 바꿔 주는 스타터입니다. 브라우저와 앱은 pusher-js, Laravel Echo, Pusher 모바일 SDK로 연결하며 WebSocket 서버나 STOMP 브로커를 운영할 필요가 없습니다.

  • @HibiraChannel은 Spring Security의 사용자로 채널을 인가하고, pusher-js가 호출하는 인증 엔드포인트도 스타터가 제공합니다. Spring MVC와 WebFlux 모두 지원합니다.
  • @HibiraBroadcast는 트랜잭션이 커밋된 뒤 애플리케이션 이벤트를 브라우저로 보내고, 웹훅은 WebhookEvent로 @EventListener에 전달됩니다.
  • 클라이언트로 알림 인박스 전송, 푸시 알림 발송, 승인 요청도 할 수 있습니다. 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 토큰을 보내거나 /hibira/auth와 /hibira/user-auth를 예외로 두고, /hibira/webhooks는 세션이나 CSRF 토큰 없이 통과시키세요. 서명은 엔드포인트가 직접 검증합니다.
  • Free 플랜에서는 페이지를 불러오는 모든 출처를 앱의 허용 출처에 등록하세요(개발 중에는 http://localhost:8080, 이후에는 자신의 도메인). "*"는 유료 플랜에서 사용할 수 있습니다.

대시보드의 앱 키를 사용하세요. 시크릿은 서버에만 둡니다. 채널, 이벤트, 인가 엔드포인트는 Pusher와 똑같이 동작합니다. 무료 계정 만들기 →