Django Channels and WebSockets

Django Channels facilitates support of WebSockets in Django in a manner similar to traditional HTTP views. It wraps Django’s native asynchronous view support, allowing Django projects to handle not only HTTP, but also protocols that require long-running connections, such as WebSockets, MQTT, chatbots, etc.

In this tutorial, we’ll show you how to create a real-time app with Django Channels. To demonstrate with a live example, we’ll create a two-player tic-tac-toe game, as illustrated below. You can access the full source code in my GitHub repository.

Configuring a Django project

Follow the steps outlined below to configure your Django project.

First, install Django and channels. You must also install channels_redis so that channels knows how to interface with Redis.

Run the following command:

pip install django==3.1
pip install channels==3.0
pip install channels_redis==3.2

You should use pip3 for Linux/mac instead of pip and python3 in place of python. I used django==3.1 and channels==3.0, channels_redis==3.2.0 for this guide.

Start the Django project:

django-admin startproject tic_tac_toe

Next, create an app with the name game:

python startapp game

Add channels and game in the INSTALLED_APPS inside your