websocket不能从Nginx-uwsgi-Django??

新手上路,请多包涵

Websocket 不能通过Nginx+Uwsgi 连接到我的Django
我现在用Django处理这些urls

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

里面有一个ws

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

现在我是nginx: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

在我的测试python文件里我这么写的

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)

然后测试python文件是这样

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
        )
    ),

我怎么改呀老铁们 救救孩子!!

阅读 3.8k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题