zoukankan      html  css  js  c++  java
  • python---websocket

    1、 简介

    http是基于tcp协议的, 必须通过三次握手才能进行通信,如果需要进行长轮训请求资源则非常不便,websocket解决了这一问题,实现了多路复用,全双工通信。在webSocket协议下客服端和浏览器可以同时发送信息

    建立了WenSocket不必等待客户端先请求。这时的服务器已有主动权想什么时候发就可以发送信息到服务器。而且信息当中不必在带有head的部分信息了与http的长链接通信来说,这种方式,不仅能降低服务器的压力。而且信息当中也减少了部分多余的信息。

    2、nginx需更新配置

    普通的nginx满足不了websocket的要求,需要更新其配置。否则会报出socker error错误

    配置为:

    map $http_upgrade $connection_upgrade { 
        default upgrade; 
        '' close; 
    } 
    upstream wsbackend{ 
        server ip1:port1; 
        server ip2:port2; 
        keepalive 1000; 
    } 
     
    server { 
        listen 20038; 
        location /{ 
            proxy_http_version 1.1; 
            proxy_pass http://wsbackend; 
            proxy_redirect off; 
            proxy_set_header Host $host; 
            proxy_set_header X-Real-IP $remote_addr; 
            proxy_read_timeout 3600s; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
            proxy_set_header Upgrade $http_upgrade; 
            proxy_set_header Connection $connection_upgrade; 
        } 
    }

    第一步

    map $http_upgrade $connection_upgrade { 
        default upgrade; 
        '' close; 
    } 
     
    表示的是 
    1. 如果 $http_upgrade 不为 '' (空),则 $connection_upgrade 为 upgrade 
    2. 如果 $http_upgrade 为 '' (空),则 $connection_upgrade 为 close

    第二步:

    upstream wsbackend{ 
        server ip1:port1; 
        server ip2:port2; 
        keepalive 1000; 
    } 
     
    表示的是 nginx负载均衡 
    1. 两台服务器 (ip1:port1)和(ip2:port2) 
    2. keepalive 1000 表示的是每个nginx进程中上游服务器保持的空闲连接,当空闲连接过多时,会关闭最少使用的空闲连接.当然,这不是限制连接总数的,可以想象成空闲连接池的大小.设置的值应该是上游服务器能够承受的

    最后:

    # websocket support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    最后重启nginx

  • 相关阅读:
    使用DBUtils获取Blob类型数据
    关于 JupyterLab 与 Pandas 资源整理
    关于 Conda 在 MacOS Catalina 环境变量问题
    推荐一个符合 OIDC 规范的 JAVA 客户端
    关于 Chrome 的 Kiosk 模式
    Kubernetes 中的服务发现与负载均衡
    Prometheus 监控领域最锋利的“瑞士军刀”
    CD 基金会、Jenkins、Jenkins X、Spinnaker 和 Tekton 的常问问题
    Installing on Kubernetes with NATS Operator
    升级 ASP.NET Core 3.0 设置 JSON 返回 PascalCase 格式与 SignalR 问题
  • 原文地址:https://www.cnblogs.com/musl/p/13251480.html
Copyright © 2011-2022 走看看