공식 패키지 · 프레임워크

Django Channels 없이 실시간 Django 페이지

WSGI Django 앱이 평소처럼 HTML 조각을 렌더링해 브로드캐스트하면, 열려 있는 모든 페이지가 그 조각을 바로 추가, 교체, 삭제합니다. Django Channels, ASGI 서버, Redis를 운영할 필요가 없습니다.

  • @broadcasts 데코레이터 하나로 목록이 모든 페이지에서 실시간으로 바뀝니다. 뷰, 관리자 화면, Celery 작업, 셸 어디서 저장해도 같습니다.
  • 브로드캐스트는 트랜잭션이 커밋된 뒤에 전송되며, htmx와 Turbo 8을 지원합니다.
  • 직접 만든 프라이빗·프레즌스 채널 서명, 웹훅 검증, 푸시 알림 토큰 발급도 합니다. Python 3.10 이상에서 Django 4.2~6.1을 지원합니다.

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

  1. 설치

    pip install django-hibira
    
    # INSTALLED_APPS += ["django_hibira"]
    # urlpatterns += [path("hibira/", include("django_hibira.urls"))]
    
    HIBIRA_APP_ID=YOUR_APP_ID
    HIBIRA_APP_KEY=YOUR_APP_KEY
    HIBIRA_APP_SECRET=YOUR_APP_SECRET
    HIBIRA_HOST=ws.hibira.io
    
    python manage.py hibira_check
  2. 설정하기

    # chat/models.py
    from django.db import models
    from django_hibira import broadcasts
    
    
    @broadcasts(to="room", target="messages")
    class Message(models.Model):
        room = models.ForeignKey(Room, on_delete=models.CASCADE, related_name="messages")
        body = models.TextField()
  3. 사용하기

    {# base.html, in <head> #}
    {% load hibira %}
    {% hibira_scripts %}
    
    {# chat/room.html #}
    {% hibira_stream room %}
    <ul id="messages">
      {% for message in room.messages.all %}{% include "chat/_message.html" %}{% endfor %}
    </ul>

시작하기 전에

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

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