• websockets django nginx webssh


    websocket

    1.实现方案一:

      django + dwebsocket    + gunicorn +nginx

      pip install dwebsocket

      部分代码

      

    from dwebsocket import require_websocket
    
    @require_websocket
    def ws(request):
        if not request.is_websocket():                 # 判断是不是websocket连接
            pass
        else:
            多线程
            while request.websocket.has_messages:
                msg= request.websocket.wait()
                if msg:
                   。。。
    
    接受方法
    。。。
    req.websocket.send(data)
    

      

           设置 gunicorn 的timeout 解决30秒退出

      nohub gunicorn -w 6 -b 127.0.0.1:8080 --timeout 3600&

      nginx.conf

    server{
        # the port your site will be served on
        listen      80;
    
        # the domain name it will serve for
        #server_name www.scloud.cn; # substitute your machine's IP address or FQDN
        charset     utf-8;
    
        # max upload size
        client_max_body_size 75M;   # adjust to taste
    
        # Django media
        location /media  {
            alias /opt/soft/pro_name/media;  # your Django project's media files - amend as required
        }
    
        location /static {
            alias /opt/soft/pro_name/static; # your Django project's static files - amend as required
        }
    
        location / {
          # 反向代理透传客户端ip
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-NginX-Proxy true;
    
          proxy_pass http://localhost:8080;
        }
    
         #websocket setting
         location /app/websocket_url {
            proxy_pass http://localhost:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            client_max_body_size 10m;
            client_body_buffer_size 128k;
            proxy_connect_timeout 600;
            proxy_send_timeout 120;
            proxy_read_timeout 600;
            proxy_buffer_size 4k;
            proxy_buffers 4 32k;
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;
         }
    
    }
    

      

    2.实现方案二:

      django +uwsgi + nginx

           import uwsgi

           uwsgi.websocket_recv_nb() 

           会爆出异常 no Pone   until 30 seconds

           解决方案: 1.修改uwsgi 源码 : 在初始化中将默认的30秒改大,或者注释掉check_ping_pong 方法

            2.误打误撞不知道修改了什么,解决了,但是很遗憾,我忘记了自己做了什么

                         暂时还没弄懂为什么发了ping,没有响应pong

    webssh

         xterm.js

         默认是utf-8 ,最小容器是没有安装vim的,使用vim注意解决编码问题,以及width and  height,编码有误会出现闪退问题。 宽和高设置错误,会不显示全屏

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    没有什么是写一万遍还不会的,如果有那就再写一万遍。
  • 相关阅读:
    《C#并发编程经典实例》学习笔记—2.4 等待一组任务完成
    Captcha服务(后续2)— 改造Captcha服务之Asp.Net Core项目中如何集成TypeScript
    VS Code调试.Net Core版Hello World
    Visual Studio Code 语言设置
    Captcha服务(后续1)
    css——格式
    作业 5/13
    css选择器
    作业 5/12
    前端——表格标签,表单标签,css
  • 原文地址:https://www.cnblogs.com/waken-captain/p/8454722.html
Copyright © 2020-2023  润新知