공식 패키지 · 프레임워크

Mercure hub 없는 Symfony UX Turbo Streams

Doctrine #[Broadcast] 엔티티, Turbo Streams, Symfony Messenger가 Hibira를 통해 업데이트를 보내고, 브라우저는 WebSocket으로 받습니다. Mercure hub를 운영할 필요가 없습니다.

  • #[Broadcast], turbo_stream_listen(), turbo_stream_from()이 Mercure와 똑같이 동작하며, 트랜스포트 이름만 hibira입니다.
  • 모든 업데이트가 Messenger 메시지라 비동기 워커가 보낼 수 있고, 네트워크가 느려도 요청이 느려지지 않습니다.
  • 직접 만든 프라이빗·프레즌스 채널 서명, 웹훅 검증, 푸시 알림 토큰 발급도 합니다. Symfony 6.4, 7, 8과 UX Turbo 2, 3을 지원합니다.

로그인하면 예제 코드에 내 클러스터 호스트가 채워집니다. 로그인

  1. 설치

    composer require hibira-io/symfony-bundle
    
    # .env.local
    HIBIRA_APP_ID=YOUR_APP_ID
    HIBIRA_APP_KEY=YOUR_APP_KEY
    HIBIRA_APP_SECRET=YOUR_APP_SECRET
    
    php bin/console hibira:check
  2. 설정하기

    use Symfony\UX\Turbo\Attribute\Broadcast;
    
    #[ORM\Entity]
    #[Broadcast]
    class Message
    {
        // ...
    }
  3. 사용하기

    {# templates/broadcast/Message.stream.html.twig #}
    {% block create %}
    <turbo-stream action="append" target="messages">
      <template>{{ include('message/_message.html.twig', { message: entity }) }}</template>
    </turbo-stream>
    {% endblock %}
    
    {# the page #}
    <ul id="messages" {{ turbo_stream_listen('App\\Entity\\Message') }}></ul>

시작하기 전에

  • 앱 시크릿은 앱을 만들거나 시크릿을 교체할 때 한 번만 표시됩니다. 서버에만 두고, 브라우저나 게임 빌드에는 절대 넣지 마세요.
  • Free 요금제에서는 페이지를 불러오는 모든 오리진을 앱의 허용 오리진에 등록하세요(개발 중에는 http://localhost:3000, 이후에는 내 도메인). "*"는 유료 요금제에서 쓸 수 있습니다.

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