Als ich versuchte, die Django-Anwendung sslserver
wie unten gezeigt auszuführen ,
python manage.py runsslserver
Fehler:
Zurück verfolgen:
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
Browserkonsole:
(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
Code:
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);
Es funktioniert gut mit python manage.py runserver
Befehl, bedeutet, dass http
es funktioniert, aber nicht mit https
.
Wie kann ich dieses Problem beheben? (Wie kann ich debuggen, um dieses Problem zu beheben?)
Gibt es eine andere Möglichkeit, WebSockets im https
Portal bereitzustellen ?
Immer noch vor diesem Problem. Kann mir bitte jemand helfen?
Wie auch immer, dies dient zu Testzwecken. Schließlich muss ich es auf Apache2.4 auf dem Windows Server-Computer bereitstellen. Wo ich mich schon eingerichtet habe, https
aber nicht für Web-Sockets.
http
.CHANNEL_LAYERS
wurde konfiguriert und es funktioniert völlig gut mithttp
. Wie läuft man weiterhttps
?Antworten:
Ich fand die Antwort, der
runserver
Befehl erkennt dieasgi.py
Datei korrekt und führt die Django-Kanalanwendung auf WebSockets mit daphne aus. Irgendwie machtrunsslserver
es nicht den gleichen Job, es führt diewsgi.py
Datei anstelle derasgi.py
Datei aus.Nachdem ich verschiedene Ansätze gelesen habe, erfahre ich, dass wir
HTTPS
Anfragen mit unserem normalen Entwicklungsserver (dh mitwsgi.py
Datei) undwss
Anfragen mitDaphne
(dh mitasgi.py
Datei) bearbeiten können .Daphne war ein offiziell entwickelter Server für Django-Kanäle (auf der Oberseite des verdrillten Moduls aufgebaut).
Schließlich müssen wir zwei Server ausführen, um sie getrennt
https
undwss
getrennt zu handhaben .Wir können dieselben SSL-Zertifikate verwenden, die auch
runsslserver
zum Testen verwendet werden.Schließlich in JavaScript:
Ich hoffe, das spart jemandem Zeit.
quelle