• 使用Nginx代理和转发Websocket连接


    1.Websocket 简介

    WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。

    2.Nginx 简介

    Nginx是一个反向代理服务器,所有的来自浏览器的请求必须经过Nginx。

    通常的正向代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中,此时客户机是主动方。

    而在反向代理中,web服务器是主动方,客户机必须经过代理才能访问。

    3.Uwsgi 简介

    所谓后端APP,即一套用来处理客户端请求的逻辑部分的程序;

    所谓WSGI,即python用来web开发的协议标准;

    所谓uWSGI,即一个即可以充当web服务器,又可以作为中间件的程序;

    所谓uwsgi,是uWSGI基于WSGI实现的自用的一个协议;

    4.配置Nginx代理Websocket连接

    一 Nginx监听80端口,并转发到443端口。即默认使用https传输。

    二 在443端口,开启ssl,设置证书。

     如果监听到指定websocket连接,设置websocket协议升级,具体配置如下:

    proxy_connect_timeout 2s
    ...
    proxy_pass https://clusters
    ...
    proxy_set_header X-Real_IP $remote_addr_IP
    proxy_set_header Host $host
    proxy_set_header X_Forward_For $X_Forward_For
    proxy_http_version 1.1
    proxy_set_header Upgrade $http_upgrade
    proxy_set_header Connection 'upgrade'

    三 监听另一端口,配置同上,并将消息转发给uwsgi端口,交付给uwsgi处理。

    5.前后端发送和处理Websocket消息

    前端使用javascript接口新建websocket对象,并监听websocket.onmessage事件,进行消息接受和处理。并通过websocket.send()接口进行消息发送。

    后端uswgi框架使用类似的websocket对象进行消息收发和处理。

    危楼高百尺,手可摘星辰。不敢高声语,恐惊天上人。
  • 相关阅读:
    网络基础
    Web开发几种常用工具
    win组合键概述(windows10)
    Alfred使用
    Java8之新特性--modules
    jsp九大内置对象和四大作用域
    authtype
    Myeclipse中的快捷键
    如何在Jenkins CI 里调试
    写好unit test的建议和例子
  • 原文地址:https://www.cnblogs.com/mingtan/p/9033478.html
Copyright © 2020-2023  润新知