Как корректно запустить SocketIO + Django?

Для корректного запуска SocketIO вместе с Django, необходимо выполнить ряд шагов:

Шаг 1: Установка зависимостей
Сначала убедитесь, что у вас уже установлены Django и python-socketio. Если нет, установите их, выполнив команды:

pip install django
pip install python-socketio

Шаг 2: Создание проекта Django
Создайте новый проект Django командой:

django-admin startproject myproject

Шаг 3: Создание приложения Django
Создайте новое приложение Django внутри созданного проекта:

cd myproject
python manage.py startapp myapp

Шаг 4: Настройка настроек Django
Откройте файл settings.py в папке myproject и добавьте в следующие строки в секцию INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    'myapp',
    'django_socketio',
]

Шаг 5: Создание URL-маршрутов Django
Откройте файл urls.py в папке myproject/myproject и добавьте в следующие строки в список urlpatterns:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('socket.io/', include('django_socketio.urls')),
]

Шаг 6: Создание входного файла SocketIO
Создайте новый файл wsgi.py в папке myproject и добавьте в следующие строки:

import os
from django.core.wsgi import get_wsgi_application
from socketio.server import wsgi as SocketIOHandler

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
application = get_wsgi_application()
application = SocketIOHandler(application)

Шаг 7: Создание представлений Django
Откройте файл views.py в папке myapp и добавьте в него следующий код:

from django.http import HttpResponse
from socketio import socketio_manage
from myproject.myapp import SocketIOHandler

def my_socketio_view(request):
    try:
        socketio_manage(request.environ, {'': SocketIOHandler})
    except:
        pass
    return HttpResponse()

Шаг 8: Создание обработчиков SocketIO
Создайте новый файл myapp.py в папке myapp и добавьте следующий код:

from socketio.namespace import BaseNamespace

class SocketIOHandler(BaseNamespace):
    def on_connect(self):
        print('Client connected')

    def on_disconnect(self):
        print('Client disconnected')

    def on_message(self, message):
        print('Received message:', message)
        self.emit('response', 'Message received')

Шаг 9: Создание шаблона HTML
Создайте новый файл index.html в папке myapp/templates и добавьте следующий код:

<!DOCTYPE html>
<html>
<head>
    <title>SocketIO + Django</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
    <script>
        var socket = io.connect('http://localhost:8000');
        socket.on('connect', function() {
            console.log('Connected to server');
        });

        socket.on('disconnect', function() {
            console.log('Disconnected from server');
        });

        socket.on('response', function(data) {
            console.log('Received response:', data);
        });

        function sendMessage() {
            var message = document.getElementById('message').value;
            socket.emit('message', message);
        }
    </script>
</head>
<body>
    <h1>SocketIO + Django</h1>

    <input type="text" id="message" />
    <button onclick="sendMessage()">Send</button>
</body>
</html>

Шаг 10: Создание миграций и запуск сервера Django
Выполните следующие команды:

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

Поздравляю! Теперь у вас должен быть полностью рабочий сервер SocketIO, интегрированный с Django. Вы можете открыть браузер и перейти по адресу http://localhost:8000 для запуска приложения и проверки его работоспособности.