Для корректного запуска 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
для запуска приложения и проверки его работоспособности.