Intereting Posts
файлы сертификатов для apache – crt, pem, key, p7b … я потерян Запустить команду оболочки в качестве другого пользователя или изменить пользователя Apache? Как избежать базовой аутентификации для проверки работоспособности AWS ELB с помощью конфигурации nginx GNU Octave, округляет число до единицы точности Как определить тип (AD User vs. AD Group) учетной записи? Преобразование кодировки из всего проекта в utf-8 Javascript-файл разбился и преобразован в «NUL NUL NUL» notepad ++ Supervisord – redirect процесса stdout на консоль ffmpeg, чтобы получить снимок экрана Команда перезапуска Nginx после установки пассажира Изменить рабочий каталог в оболочке с помощью скрипта python Управление расширением подстановки командной строки оболочки на C или C ++ DOCKERFILE: запуск нескольких CMD. (Запуск NGINX и PHP) Извлечь количество строк из fread без чтения всего файла Не удалось отправить файл с ftp на другой ftp

Проблемы с запуском Django Channels

Я создаю собственное приложение, основанное на уроке Channel 2.0 . Однако я не могу установить соединение с WebSocket. Дафни жалуется на 404, заявив, что URL-адрес веб-узла не найден. Я не уверен, где ошибка.

UPDATE : Моя Daphne работает за сервером nginx. Также обновляется конфиг nginx:

Моя структура каталогов выглядит следующим образом

- SomeDashboardProject |-- Dashboard |-- asgi.py |-- settings.py |-- urls.py |-- routing.py |-- ... |-- WebSocketTest |-- consumers.py |-- routing.py |-- urls.py |-- views.py |-- templates |-- WebSocketTest |-- index.html 

WebSocketTest / шаблоны / WebSocketTest / Index.html

  var dashboard_id = '1'; var chatSocket = new WebSocket('ws://' + window.location.host + '/ws/dboard/' + dashboard_id + '/'); chatSocket.onmessage = function(e) { var data = JSON.parse(e.data); console.log(data); }; chatSocket.onclose = function(e) { console.error('Chat socket closed unexpectedly'); };  

WebSocketTest / views.py

 def index(request): return render(request, 'WebSocketTest/index.html', {}) 

WebSocketTest / consumers.py

 class TestConsumer(WebsocketConsumer): def connect(self): self.accept() def disconnect(self, close_code): pass def receive(self, text_data): text_data_json = json.loads(text_data) message = text_data_json['message'] print(message) 

WebSocketTest / routing.py

 websocket_urlpatterns = [ url(r'^ws/dboard/(?P\d+)/$', consumers.TestConsumer), ] 

WebSocketTest / urls.py

 urlpatterns = [ url(r'^$', views.index, name='index'), ] 

Панель / routing.py

 application = ProtocolTypeRouter({ 'websocket': AuthMiddlewareStack( URLRouter( WebSocketTest.routing.websocket_urlpatterns ) ) }) 

Панель / urls.py

 urlpatterns = [ url(r'^test/', include('websockettest.urls'), name='test'), ] 

Daphne Журнал ошибок

 2018-06-12 02:41:58,857 WARNING Not Found: /ws/dboard/1/ None - - [12/Jun/2018:02:41:58] "GET /ws/dboard/1/" 404 974 

nginx.conf

 upstream home { server unix:///Users/pranavprakash/workspace/SomeDashboardProject/nginx.sock; } # configuration of the server server { # the port your site will be served on listen 80; # the domain name it will serve for server_name localhost; # substitute your machine's IP address or FQDN charset utf-8; # max upload size client_max_body_size 75M; # adjust to taste # Django media location /media { alias /Users/pranavprakash/workspace/SomeDashboardProject/media; } location /static { alias /Users/pranavprakash/workspace/SomeDashboardProject/staticfiles; } # Finally, send all non-media requests to the Django server. location / { uwsgi_pass home; include /Users/pranavprakash/workspace/SomeDashboardProject/uwsgi_params; } } 

После небольшого поиска я обнаружил, что это проблема с конфигурацией Nginx. Конфигурация nginx, которую я разместил, не позволяет использовать веб-узлы. Необходимо выполнить следующее изменение:

 location / { uwsgi_pass home; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; include /Users/pranavprakash/workspace/SomeDashboardProject/uwsgi_params; } 

Более подробная информация доступна в блоге Nginx