#django #amazon-web-services #amazon-ec2 #websocket #daphne
Вопрос:
Я пытаюсь развернуть свое приложение django chammels asgi в экземпляре ubuntu aws ec2, мое приложение wsgi работает нормально, также asgi на ubuntu работает нормально (протестировано с библиотекой python websocket) в коде нет ошибок, и дафна работает отлично
Я также включил все порты в группе безопасности EC2
В кодовой базе нет ошибок, а также дафна отлично работает на локальном хосте экземпляра EC2 ubuntu
server {
listen 80;
server_name MY_SERVER_IP;
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
location /ws/{
proxy_pass http://0.0.0.0:4001;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
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;
}
}
[Unit]
Description=project Daphne Service
After=network.target
[Service]
User=root
Type=simple
WorkingDirectory=/home/ubuntu/myproject
ExecStart=/home/ubuntu/myproject/venv/bin/python /home/ubuntu/myproject/venv/bin/d>
[Install]
WantedBy=multi-user.target
Я создал этот скрипт на python, чтобы определить, работает моя дафна или нет, он дает мне идеальный результат, без ошибок
import asyncio
import websockets
import json
async def hello():
uri = "ws://127.0.0.1:4001/ws/chat/person/?token=<CHAT_TOKEN>
async with websockets.connect(uri) as websocket:
await websocket.send(json.dumps({"message":"Hey there"}))
g = await websocket.recv()
print(g)
asyncio.get_event_loop().run_until_complete(hello())
This following script returns
{
"id": 1,
"message": "Hey There",
"time_stamp": "TIME",
"receiver": {
"username": "John Doe",
"id": 2",
"profile_picture": "LINK"
}
}
Now in my frontend application when I try to connect with the websocket
socket = new WebSocket("ws://<SERVER_IP>:4001/ws/chat/person/?token=<MY_TOKEN>")
socket.onopen = functon(){
...
}
...
Но следующий сценарий возвращает
WebSocket connection to 'ws://<SERVER_IP>/ws/chat/person/?token=<TOKEN> failed: