带有Django渠道和Daphne网络服务器的wss(安全网络套接字)

我试图弄清楚如何设置Django通道,以便它通过wss://方案接受我的websocket连接。

对于ws://,一切正常。我在客户端使用websockets软件包来建立与服务器的连接(该服务器将Channels作为ASGI服务器运行)。但是,当我切换到wss://并开始运行客户端时,...在60秒钟内什么都没有发生,此后我收到一条错误消息,指出: “ SSL握手耗时超过60.0秒:中止连接”

我的Daphne服务器正在标准端口8000的localhost上运行。

Starting ASGI/Channels version 2.2.0 development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
INFO - 2019-11-15 14:12:14,094 - django-main-thread - daphne.server[110] - HTTP/2 support not enabled (install the http2 and tls Twisted extras)
INFO - 2019-11-15 14:12:14,094 - django-main-thread - daphne.server[119] - Configuring endpoint tcp:port=8000:interface=127.0.0.1
INFO - 2019-11-15 14:12:14,095 - django-main-thread - daphne.server[150] - Listening on TCP address 127.0.0.1:8000

我知道HTTP和HTTPS以及TCP和TLS应该在不同的端口上运行,但是由于我在Django Channels readthedocs网站上找不到任何提示,因此我认为它可能奇迹般地处理了这两者而没有任何配置必要。我想我错了?

像这样建立客户端连接:

ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
    ssl_context.set_ciphers(get_allowed_ciphers())
    ssl_context.verify_mode = ssl.CERT_REQUIRED
    ssl_context.check_hostname = False

async with websockets.client.connect(
            uri=url,extra_headers=header,ssl=ssl_context) as websocket:
      await asyncio.gather(on_open(websocket),on_message(websocket))

on_open()和on_message()方法分别处理套接字的打开和解析传入消息。

现在,我实际上期望也能够在服务器端(使用Channels)设置SSL上下文,但是经过数小时的在线研究,我还没有找到一个示例。我宁愿仅看到将nginx配置为侦听端口443并指向必要证书的示例。

我以为Daphne是一台生产就绪型服务器,可以处理HTTP(s)和WebSocket(ws和wss)请求。我需要Nginx有什么用?

这似乎是一个愚蠢的问题,但我很高兴在这里提供任何帮助。

dajiaonline 回答:带有Django渠道和Daphne网络服务器的wss(安全网络套接字)

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3093914.html

大家都在问