NGINX Websocket 初始通信延迟

NGINX Websocket 初始通信延迟

我已经创建了一个 Django 服务器,它利用django-channels用于 websocket 通信。当我使用 NGINX 运行服务器时,服务器和客户端之间的 websocket 通信存在初始延迟。初始延迟过后,所有缺失的数据都会在很短的时间内到达,然后开始实时通信。

我已经测试了独立服务器和仅使用 Daphne 实例(没有 NGINX 代理)并且没有初始通信延迟。

以下是我的 NGINX 配置。如果有人知道为什么我在 websocket 通信中会遇到 10 多秒的初始延迟,我将不胜感激。

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    map $http_upgrade $connection_upgrade {
      default upgrade;
      '' close;
    }
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  0;

    #gzip  on;
    # the upstream component nginx needs to connect to
  upstream django {
      server 127.0.0.1:8001;
  }
  server {
    listen 80;
    client_max_body_size 20M;
    server_name localhost;

    location / {
            proxy_pass http://django;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;

            proxy_redirect     off;
            proxy_buffering    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;

        }

    }

}

附加信息:无论消息放入队列的速度有多快,每次发送消息之前都需要相同数量的消息,这意味着消息延迟不是基于时间的,而是基于缓冲区溢出的?因为在某种缓冲区填满之前它不会发送任何数据?

相关内容