Я пытаюсь сделать чат. Есть некоторые функции, которые работают с «оригиналом» Django (def index (запрос) и т. Д.), Но также есть функции, где мне нужно использовать веб-сокеты. Я установил каналы, чтобы сделать интерфейс веб-сокета. Итак, у меня есть две системы: межсетевые соединения Gunicorn с HTTP (S) и межсетевые соединения Daphna с интерфейсом WS (S). На своем локальном компьютере я установил все файлы (asgi.py, consumer.py, routing.py и settings.py) и набрал: python manage.py runserver - все работает. Но когда я развертываю его на героку, я получаю много ошибок.
Я попробовал все, но не нашел решения. Обратитесь за помощью.
Вот мои файлы:
chat / Procfile
web: daphne Chat.asgi:channel_layer --port $PORT
web2: gunicorn Chat.wsgi
chat / chat / asgi.py
import os
import channels.asgi
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Chat.settings')
channel_layer = channels.asgi.get_channel_layer()
чат / чат / routing.py
from channels.routing import route
channel_routing = {
'websocket.connect': 'user_chating.consumers.ws_connect',
'websocket.receive': 'user_chating.consumers.ws_message',
'websocket.disconnect': 'user_chating.consumers.ws_disconnect',
#'send_email': 'user_chating.consumers.send_email_consumer'
}
чат / чат / settings.py
...
# Application definition
INSTALLED_APPS = [
'user_chating',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'channels',
]
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'asgiref.inmemory.ChannelLayer',
'ROUTING': 'Chat.routing.channel_routing',
},
}
ASGI_APPLICATION = "Chat.routing.application"
MIDDLEWARE = [
'whitenoise.middleware.WhiteNoiseMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'Chat.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR, 'templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'Chat.wsgi.application'
...
chat / chat / wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Chat.settings')
application = get_wsgi_application()
chat / user_chatting / consumer.py
import json
import time
from django.core.mail import send_mail
from channels.channel import Group
def ws_connect(message):
Group('chat').add(message.reply_channel)
message.reply_channel.send({"accept": True})
def ws_message(message):
Group('chat').send({'text': json.dumps({'message': message.content['text'],
'sender': message.reply_channel.name})})
def ws_disconnect(message):
Group('chat').discard(message.reply_channel)
Кто-нибудь может мне помочь, пожалуйста?