Quando tentei executar o aplicativo Django usando sslserver
como mostrado abaixo,
python manage.py runsslserver
Erros:
Traceback:
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
Console do navegador:
(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
Código:
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);
Está funcionando bem com o python manage.py runserver
comando, significa http
que está funcionando, mas não com https
.
Como resolver esse problema? (Como depurar para resolver esse problema?)
Existe alguma outra maneira de implantar o WebSockets no https
portal?
Ainda enfrentando esse problema. Alguém por favor pode ajudar?
De qualquer forma, isso é para fins de teste; finalmente, preciso implantá-lo no Apache2.4 na máquina do servidor Windows. Onde eu já configurei, https
mas não para soquetes da web.
http
.CHANNEL_LAYERS
foi configurado e está funcionando perfeitamentehttp
. Como correrhttps
?Respostas:
Encontrei a resposta, o
runserver
comando detecta corretamente oasgi.py
arquivo e executa o aplicativo de canais do Django no WebSockets usando daphne. De alguma forma,runsslserver
não está fazendo o mesmo trabalho, está executando owsgi.py
arquivo em vez de oasgi.py
arquivo.Depois de ler abordagens diferentes, eu sei que podemos lidar com
HTTPS
solicitações usando nosso servidor de desenvolvimento normal (ou seja, usandowsgi.py
arquivo) ewss
solicitações usandoDaphne
(ou seja, usandoasgi.py
arquivo).Daphne foi um servidor oficialmente projetado para lidar com canais django (construído na parte superior do módulo trançado).
Então, finalmente, precisamos executar dois servidores para manipular
https
ewss
separadamente.Podemos usar os mesmos certificados SSL usados pelos
runsslserver
testes.Por fim, em JavaScript:
Espero que isso economize o tempo de alguém.
fonte