Каналы Django, использующие защищенное соединение WebSocket - WSS: // - PullRequest
3 голосов
/ 08 ноября 2019

Когда я пытался запустить сервер, используя sslserver, как показано ниже,

python manage.py runsslserver

Ошибки:

Трассировка:

Validating models...

System check identified no issues (0 silenced).
November 08, 2019 - 11:17:26
Django version 2.0.7, using settings 'dashboard_channels.settings'
Starting development server at https://127.0.0.1:8000/
Using SSL certificate: \lib\site-packages\sslserver\certs\development.crt
Using SSL key: \lib\site-packages\sslserver\certs\development.key
Quit the server with CTRL-BREAK.
[08/Nov/2019 11:18:33] "GET / HTTP/1.1" 200 1299
[08/Nov/2019 11:18:34] "GET / HTTP/1.1" 200 1299
[08/Nov/2019 11:18:35] "GET /static/js/jquery.js HTTP/1.1" 200 270575
Not Found: /ws/home
[08/Nov/2019 11:18:36] "GET /ws/home HTTP/1.1" 404 2134

Консоль браузера:

(index):31 WebSocket connection to 'wss://127.0.0.1:8000/ws/home' failed: Error during WebSocket handshake: Unexpected response code: 404
(index):41 error Event
(index):44 close CloseEvent

Код:

Javascript:

 var loc = window.location;
 var wsStart = 'ws://';
 if (loc.protocol == 'https:') {
     wsStart = 'wss://'
 }
 var endpoint = wsStart + loc.host + '/ws/home';

 var socket = new WebSocket(endpoint);

Работает нормально с командой python manage.py runserver, значит для http работает, но не с https.

Как решить эту проблему? (Как отладить, чтобы разобраться с этой проблемой?)

Есть ли другой способ запуска в https для проверки WebSockets вместо django-sslserver библиотеки?

В любом случае этодля тестирования, наконец, мне нужно развернуть его на Apache2.4 на компьютере с Windows-сервером. Где я уже настроил для https, но не для веб-сокетов.

...