带有通道2.1.1的Django在WebSocket握手500期间出错

时间:2018-11-17 04:26:38

标签: django websocket django-channels

我正在使用Django和Channels 2.1.1开发一个项目。一切在我的家用PC上都运转良好,但是当我部署到AWS时,出现错误:'与'ws:// IP / ws / lobby /'的WebSocket连接失败:WebSocket握手期间出错:意外的响应代码:500'从HTML中我建立聊天套接字的行开始:

var chatSocket = new WebSocket(
            'ws://' + window.location.host + '/ws/' + roomName + '/'
        );

我正在使用nginx,daphne和gunicorn在主机上运行Django应用程序。 Nginx设置为将websocket请求路由到达芙妮处理的端口9000,gunicorn处理端口8000上的wsgi。 当我转到Channels 2教程时,其中有一个部分用于测试频道层和Redis之间的通信 我测试并工作的Django Shell。 我的完整代码可以在https://github.com/Rob-Fox/Chat2

上看到

谢谢

原来是500错误,是由于我忘记安装和配置Redis而引起的。现在一切正常。

Nginx配置:

server {
  listen 80;
  server_name IP;
  location = /favicon.ico { access_log off; log_not_found off; }
  location /static/ {
      root /home/ubuntu/Chat2;
  }
  location / {
      include proxy_params;
      proxy_pass http://unix:/home/ubuntu/Chat2/channelS.sock;
  }
  location /ws/ {
      proxy_pass http://0.0.0.0:9000;
      proxy_http_version 1.1;

      proxy_read_timeout 86400;
      proxy_redirect     off;

      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Host $server_name;
}

0 个答案:

没有答案