Помогите пожалуйста разобраться с ошибкой. Создал веб-приложение на django. Подключил веб сокеты по инструкции (
https://alex-oleshkevich.medium.com/websockets-in-...).
При запуске веб-приложения происходит подключение к веб сокетам с помощью js (
ws://localhost/websocket/). Собственно, при событии websocket.accept возникает ошибка:
Internal Server Error: /websocket/
Traceback (most recent call last):
File "/home/pi/microwire/venv/lib/python3.7/site-packages/asgiref/sync.py", line 458, in thread_handler
raise exc_info[1]
File "/home/pi/microwire/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 38, in inner
response = await get_response(request)
File "/home/pi/microwire/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 233, in _get_response_async
response = await wrapped_callback(request, *callback_args, **callback_kwargs)
File "./app/views.py", line 76, in websocket
await socket.accept()
AttributeError: 'ASGIRequest' object has no attribute 'accept'
Список зависимостей:
asgiref 3.3.4
click 7.1.2
Django 3.2.3
django-user-agents 0.4.0
djangorestframework 3.12.4
gunicorn 20.1.0
h11 0.12.0
pip 18.1
pkg-resources 0.0.0
psycopg2 2.8.6
pytz 2021.1
setuptools 40.8.0
sqlparse 0.4.1
typing-extensions 3.10.0.0
ua-parser 0.10.0
user-agents 2.2.0
uvicorn 0.13.4
views.py:
from django.http import *
from django.shortcuts import render
from .models import Settings
from microwire.connection import WebSocket
async def websocket(socket: WebSocket):
await socket.accept()
while True:
message = await socket.receive_text()
await socket.send_text(message)
def index(request):
current_settings = Settings.objects.all()[0]
settings = Settings.objects.all()[1:]
return render(request, 'index.html', {'current_settings': current_settings, 'settings': settings})
urls.py:
from app import views
from django.urls import path, include
websocket = path
urlpatterns = [
websocket('websocket/', views.websocket),
path('', views.index)
]