
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 manage.py startapp game
Add channels and game in the INSTALLED_APPS inside your settings.py:
## settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'channels','game'
]