Django Http to WebSocket App

This is a simple web application using Django Channels framework and sending WebSocket message from Django view. And this application uses database access in consumer.

Flow

Client A                  Server                  Client B
   |-- POST /join --------->|                        |
   |                  Save client A                  |
   |<------ Redirect to / --|                        |
   |-- GET / -------------->|                        |
   |                        |                        |
   |== Connect WebSocket ==>|                        |
   |== Get members ========>|                        |
   |<======= Members list ==|                        |
   |                        |                        |
   |                        |<--------- POST /join --|
   |                  Save client B                  |
   |<====== Join client B ==|                        |
   |                        |-- Redirect to / ------>|
   |                        |<-------------- GET / --|
   |                        |                        |
   |                        |<== Connect WebSocket ==|
   |                        |<======== Get members ==|
   |                        |== Members list =======>|
   |                        |                        |
   |                        |<-------- POST /leave --|
   |                  Delete client B                |
   |<===== Leave client B ==|                        |
   |                        |-- Redirect to /join -->|

-->: HTTP, ==>: WebSocket

Test run

pip install -r requirements.txt
docker run -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust -d postgres:9 
docker run -p 6379:6379 -d redis:5
cd httptowebsocket
python manage.py migrate
python manage.py runserver

Access to http://127.0.0.1:8000/room/

Run by docker compose

docker-compose build
docker-compose up -d

Access to http://127.0.0.1:8000/room/

References