Websocket-соединение не удалось: С помощью django и vue.js
Я пытаюсь настроить вебсокеты для отображения любой новой записи в модели Post (я новичок в работе с вебсокетами)
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
content = models.TextField()
status = models.IntegerField(choices=STATUS, default=0)
author = models.ForeignKey(
User,
related_name="blog_posts",
on_delete=models.CASCADE,
)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Это consumers.py
class PostConsumer(ListModelMixin, GenericAsyncAPIConsumer):
queryset = Post.objects.all()
serializer_class = PostSerializer
permissions = (permissions.AllowAny,)
Для проверки того, работает ли это, у меня есть html, и я обрабатываю websockets с помощью vue.js
вот более релевантная часть index.html
когда я запускаю в консольных журналах я вижу следующее сообщение
WebSocket connection to 'ws://localhost:8001/ws/' failed:
Пожалуйста, дайте мне знать, если есть что-то еще, чем я должен поделиться.
У меня возникла коварная ошибка. Вот что у меня было в settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'user',
'rest_framework_simplejwt',
'channels',
'daphne',
]
Я переместил каналы и Дафну в начало списка, и это сработало. Вот так
INSTALLED_APPS = [
'channels',
'daphne',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'user',
'rest_framework_simplejwt',
]