美文网首页
322-Nginx反向代理websocket 配置wss[微信小

322-Nginx反向代理websocket 配置wss[微信小

作者: 霄峰 | 来源:发表于2019-08-09 18:57 被阅读0次

    参考地址:https://www.nginx.com/blog/websocket-nginx/

    1. Nodejs写的服务端server.js

    console.log("Server started");
    var Msg = '';
    var WebSocketServer = require('ws').Server
        , wss = new WebSocketServer({port: 4431});
        wss.on('connection', function(ws) {
            ws.on('message', function(message) {
            console.log('Received from client: %s', message);
            ws.send('Server received from client: ' + message);
        });
     });
    

    然后运行:

    $ node server.js
    

    2. Nginx配置(以nst-wss.yunfeng365.com域名为例):

    $ sudo vim /etc/nginx/site-avaliable/nst-wss.yunfeng365.com
    

    内容如下:

            map $http_upgrade $connection_upgrade {
                default upgrade;
                '' close;
            }
    
            upstream websocket {
                server 127.0.0.1:4431; #代理到ws服务地址
            }
    
            server {
                    # SSL configuration
                    #
                    listen 443;
    
                    ssl on;
                    ssl_certificate /var/cert/nst-wss.yunfeng365.com.crt;
                    ssl_certificate_key /var/cert/nst-wss.yunfeng365.com.key;
    
                    ssl_session_timeout 5m;
    
                    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
                    ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
                    ssl_prefer_server_ciphers on;
    
                    underscores_in_headers on;#开启自定义头信息的下划线
                    server_name nst-wss.yunfeng365.com;
                    location / {
                            proxy_pass http://websocket;#代理到上面的地址去
                            proxy_http_version 1.1;
                            proxy_set_header Upgrade $http_upgrade;
                            proxy_set_header Connection $connection_upgrade;
                    }
            }
    

    创建完成后,增加nginx服务软链:

    $ sudo ln -s /etc/nginx/sites-available/nst-wss.yunfeng365.com /etc/nginx/sites-enabled/
    $ sudo service nginx restart
    

    3. 完成,并使用微信开发者工具测试:
    在小程序app.js中添加如下方法:

    /**
     * 连接
     */
    function initWebSocket() {
      // 连接
      wx.connectSocket({
        url: 'wss://nst-wss.yunfeng365.com',// webSocket 地址
        header: {'content-type': 'application/json'},
        success: function (res) {
          console.log('连接 success ', res);
    
          // 打开连接
          wx.onSocketOpen(function (res) {
            console.log('打开连接 ', res);
          })
        },
        fail: function (res) {
          console.log('连接 err ', res);
        }
      })
    }
    

    在小程序app.js中找到onLaunch并添加如下内容:

        onLaunch: function(options) {
            // console.info('APP Lanuch ===> ', options);
          initWebSocket();
        },
    

    结果:

    连接 success  {socketTaskId: 1, errMsg: "connectSocket:ok"}
    

    相关文章

      网友评论

          本文标题:322-Nginx反向代理websocket 配置wss[微信小

          本文链接:https://www.haomeiwen.com/subject/idmqwftx.html