You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Daphne + Django Rest Framework无法建立WSS连接求助

问题分析

你的Daphne服务当前仅配置为监听明文HTTP/WebSocket(ws)请求,未启用SSL/TLS支持,因此无法处理加密的WSS连接。从启动日志可以看到,Daphne仅启动了常规TCP端点,没有加载SSL证书相关配置。

解决方案

要启用WSS,需要给Daphne配置SSL证书和密钥,以下是具体步骤:

1. 生成自签名SSL证书(开发环境)

如果是开发测试场景,可通过OpenSSL生成自签名证书:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

执行后会生成key.pem(私钥)和cert.pem(证书),将这两个文件放到项目根目录。

2. 修改Docker Compose中Daphne的启动命令

更新docker-compose.yml里的daphne服务启动命令,添加SSL相关参数:

daphne:
  platform: linux/amd64
  build:
    context: .
    dockerfile: Dockerfile.dev
  command: 'sh -c "daphne -v 3 --access-log daphne.log -b 0.0.0.0 -p 8000 --ssl-certfile /app/cert.pem --ssl-keyfile /app/key.pem apps.asgi:application"'
  restart: always
  working_dir:  /app
  volumes:
    - ./:/app
    - /var/run/docker.sock:/var/run/docker.sock

注:证书和私钥通过volumes映射到了容器内的/app目录,路径需与容器内位置对应。

3. 重启服务

执行命令重启Daphne服务,使配置生效:

docker-compose up -d --force-recreate daphne

4. 测试WSS连接

现在可以使用wss://127.0.0.1:8000/ws/notifications/发起连接。开发环境中,浏览器可能会提示证书不安全,手动选择信任即可。

额外注意事项
  • 生产环境必须使用正规CA颁发的SSL证书,禁止使用自签名证书
  • 若前端部署在HTTPS域名下,WSS请求需使用对应域名的匹配证书,避免跨域及证书不匹配问题
  • 检查服务器防火墙是否开放了8000端口的TCP流量

内容的提问来源于stack exchange,提问作者Neo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 12:54:58