我正在尝试使Angular Websockets使用Django通道进入Amazon aws ec2实例,但是在生产时出现上述(标题)错误。它在我的本地环境中运行完美,但是在生产环境中,我只是获得连接超时,我也不知道为什么。我花了整整一周的时间试图弄清楚,但我没有头绪。
这是我的Django频道设置
ASGI_APPLICATION = "project.routing.application"
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('127.0.0.1', 6379)],
},
},
}
我的路由(虽然不完全理解这一点,但是将url模式放在那里似乎允许它在我的本地计算机上工作)
from django.conf.urls import url
from . import consumers
websocket_urlpatterns = [
url(r'^syncmessaging/$', consumers.SyncMessaging),
]
我的conf文件(supervisor_profiles_api.conf)
[program:project]
directory = /usr/local/apps/project
command = /root/.pyenv/versions/project/bin/daphne -p 9000 project.asgi:application
user = root
autostart = true
autorestart = true
我的nginx_profiles_api.conf的一部分(服务器监听443)
location / {
proxy_pass http://127.0.0.1:9000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
所以daphne在9000端口上运行(据我了解),已经有工作程序在运行(如果我检查进程),因此我不需要运行manage.py runworker?
我的consumers.py(缩短)
from channels.generic.websocket import WebsocketConsumer
class SyncMessaging(WebsocketConsumer):
#Basic connect,disconnect etc...
我的前端真的很基础,只运行一个websocket服务器,但这是我首先实例化websocket的方式
this.ws = new WebSocket('wss://api.project.com:9000/syncmessaging/');
我只是在生产中出现连接超时,我不知道为什么,我一直在挠挠我的大脑,但我只是不熟悉与aws相关的任何事情。我尝试删除api,仅将url设置为“ wss://project.com:9000 / syncmessaging /”,但这只是给我错误代码503。有人可以向我提供一些我做错了什么的信息< / p>