Клиент отправляет ws: // [хост]: [порт] / путь к серверу, а мой сервер - Nginx + uwsgi + Django, но я всегда сталкиваюсь с ошибкой 404 при запуске добраться до сервера - PullRequest
0 голосов
/ 09 мая 2019

Websocket не может быть принят Nginx + Uwsgi моему Django. Я использую Django, пишу некоторые url_patterns, такие как

http://[host]:[port]/events

И мне нужно обработать один websocket

<ws://[host]:[port]/alarm>

Nginx listen 10001и UWSGI прослушать 10002 Я добавил некоторые к моему nginx.conf

server
    {
        listen 10001;
        root  /xxx;

        location /alarm {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:10002;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_redirect off;
        }
        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:10002;
            uwsgi_read_timeout 60;
        }
    ......

, но он все еще не работает, и когда я вижу браузер, я вижу это

Status Code:404 Not Found

Я выбираю uwsgi для достижения своей веб-сокета, и в своем тесте я пишу это

ws.create_connection("ws://127.0.0.1:10001/alarm")

И я использую это для запуска моего приложения

uwsgi --init uwsgi.ini --http_websockets

И я вижу это в выводе uwsgi

GET /alarm => generated 77 bytes in 6 msecs (HTTP/1.1 404) 6 headers in 207 bytes (1 switches on core 0)

И web_client.py выдает мне ошибки ниже

Handshaken 404

Мой uwsgi.ini это

WEBSOCKET_FACTORY_CLASS="dwebsocket.backends.uwsgi.factory.uWsgiWebSocketFactory"
http = :8008
socket = :10002

В моем django я пишу это

application = ProtocolTypeRouter({
    'websocket':AuthMiddlewareStack(
        URLRouter(
            alarm.routing.channel_routing
        )
    ),

Так где мои ошибки?

...