• NodeJS反向代理websocket


    如需转载请标明出处:http://blog.csdn.net/itas109
    QQ技术交流群:129518033

    文章目录
    NodeJS反向代理websocket
    @[toc]
    前言
    代码
    相关问题:
    1.http和websocket不同端口对外暴露一个端口
    2.nodejs反向代理

    相关文章:
    NodeJS结合express使用websocket

    前言
    虽然Nginx可以进行反向代理,但是与开发人员代码的贴合度不高,尤其是前端进行端口访问时,可能会存在由于Nginx设置反向代理而带来与程序不匹配的问题(比如前端代码不使用URL端口进行访问)。并且多个端口会带来Nginx的维护成本。在NodeJS结合express使用websocket一文中,可以将http和ws端口合并,但是有时需要分别使用http和ws两个端口。本文将介绍如何在nodejs代码级进行反向代理

    代码
    const express = require('express');
    const proxy = require('http-proxy-middleware');
    const app = express();

    // var express = require('express');
    // var http = require('http');
    let https = require("https");
    var expressWs = require('express-ws');
    var fs = require('fs');

    var option = {
    key: fs.readFileSync('./keys/private.key'),
    ca: fs.readFileSync('./keys/csr.pem'),
    cert: fs.readFileSync('./keys/file.crt')
    }

    app.get('/', function (res, req) {
    req.send('123')
    })

    var wsProxy = proxy({
    target: 'https://localhost:8080', // 目标主机
    changeOrigin: true, // 需要虚拟主机站点
    ws: true, // 是否代理websocket
    }); //开启代理功能,并加载配置

    // 反向代理(这里把需要进行反代的路径配置到这里即可)
    // eg:将/api/test 代理到 ${HOST}/api/test
    app.use('/test', wsProxy);

    serverProxy = https.createServer(option, app);
    // 监听端口

    serverProxy.listen(8888, () => {
    console.log(`server running`);
    });

    serverProxy.on('upgrade', wsProxy.upgrade); // -- subscribe to http 'upgrade'

    var app2 = express();

    var httpServer;
    // httpServer = http.createServer(app2);
    httpServer = https.createServer(option, app2);

    expressWs(app2, httpServer);

    app2.ws('/test', function (ws, req) {
    console.log("ok")
    ws.send('你连接成功了')
    ws.on('message', function (msg) {
    // 业务代码
    console.log(msg);
    ws.send(msg)
    })
    })

    app2.get('/', function (res, req) {
    req.send('123')
    })

    // app.listen(8080);
    // httpServer.listen(8080);
    httpServer.listen(8080);
    ————————————————
    版权声明:本文为CSDN博主「itas109」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/itas109/java/article/details/104034178

  • 相关阅读:
    Java可变参数
    为什么static方法中不可以调用非static方法
    用注解@DelcareParents实现引用增强
    在SpringBoot中用SpringAOP实现日志记录功能
    梳理一下我理解的aop
    包裹iframe的div与iframe存在高度差的问题解决方案
    非跨域情况下iframe 高度自适应的问题解决(一)
    flex布局较之float布局的优点新发现
    webpack4 动态导入文件 dynamic-import 报错的解决方法
    vue chrome 浏览器调试工具devtools插件安装
  • 原文地址:https://www.cnblogs.com/xiami2046/p/12677075.html
Copyright © 2020-2023  润新知