Gói chính thức · Framework

Symfony UX Turbo Streams không cần Mercure hub

Các entity Doctrine có #[Broadcast], Turbo Streams và Symfony Messenger gửi cập nhật qua Hibira, và trình duyệt nhận chúng qua WebSocket. Không cần vận hành Mercure hub.

  • #[Broadcast], turbo_stream_listen() và turbo_stream_from() hoạt động như với Mercure, với transport tên là hibira.
  • Mỗi cập nhật là một message của Messenger, nên worker bất đồng bộ có thể gửi và mạng chậm không làm chậm request.
  • Ký kênh private và presence của riêng bạn, xác minh webhook và cấp token thông báo đẩy. Symfony 6.4, 7 và 8, UX Turbo 2 và 3.

Đăng nhập để xem các đoạn mã này với host cụm của riêng bạn. Đăng nhập

  1. Cài đặt

    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. Thiết lập

    use Symfony\UX\Turbo\Attribute\Broadcast;
    
    #[ORM\Entity]
    #[Broadcast]
    class Message
    {
        // ...
    }
  3. Sử dụng

    {# 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>

Trước khi bắt đầu

  • Secret của ứng dụng chỉ hiện một lần, khi bạn tạo ứng dụng hoặc xoay vòng secret. Hãy giữ nó trên máy chủ, không bao giờ đưa vào trình duyệt hay bản build game.
  • Với gói Free, hãy thêm mọi origin mà trang của bạn tải từ đó vào Origin được phép của ứng dụng (http://localhost:3000 khi phát triển, sau đó là tên miền của bạn). "*" cần gói trả phí.

Dùng app key từ bảng điều khiển; secret chỉ để trên máy chủ của bạn. Kênh, sự kiện và endpoint xác thực hoạt động y như với Pusher. Tạo tài khoản miễn phí →