如何在NodeJS / ExpressJS后端创建Web套接字代理服务器?

时间:2018-06-12 22:32:50

标签: node.js proxy http-proxy node-http-proxy http-proxy-middleware

我正在使用我的应用程序的前端(VueJS),从那里我需要启动到第三方WS服务器的Web套接字连接。我将通过连接发送的数据包含一些敏感数据,我不希望通过chrome dev工具访问(在检查WS时,可以在“Networking / WS / Frames”选项卡下找到发送的数据)

由于我正在使用VueJS框架并且我已经有一个NodeJS / ExpressJS后端设置,我正在尝试在那里设置代理服务器。因此,在WS请求的中间,我正在考虑添加一个代理服务器,它基本上会从我的前端接收连接,生成敏感数据,将调用重定向到远程服务器,并开始接收实时数据来自远程服务器。然后,当这个实时数据被接收到代理时,它将自动重定向回我的前端部分。

我正在使用随机找到的http-proxy-middleware包。在NodeJS后端部分,我正在尝试为我的localhost(端口8082)设置一个监听器 - 这将是我的代理。原始WS数据来自的远程地址是remoteAdress(端口8081):

const express = require('express');  
var proxy = require('http-proxy-middleware');

var wsProxy = proxy('/', {
    target: 'http://remoteAddress:8081/websocket',
    changeOrigin: true, 
    ws: true, 
    logLevel: 'debug'
  })

const app1 = express();
app1.use('/', express.static(__dirname));
app1.use(wsProxy);
var server1 = app1.listen(8082);
server1.on('upgrade', wsProxy.upgrade);
//require('opn')('http://127.0.0.1:8082/websocket/')

前端部分看起来像:

var wsUri = "ws://127.0.0.1:8082/websocket/";
var websocketExample = null;
try
{
    websocketExample = new WebSocket(wsUri);
}
catch(err)
{
    console.log(err);
}
websocketExample.onerror = function(evt) { console.log("onThisError"); };
websocketExample.onmessage = function(evt) { console.log("onThisMessage"); };
websocketExample.onopen = function(evt) { console.log("onThisOpen"); };

出于测试目的,我正在使用wsc npm package,我实际上可以看到后端发生了某些事情,但这并不是我期待的行为。

enter image description here

使用左侧的命令,我正在启动Web套接字连接,每次在我输入时,在右侧我都会得到两行:

[HPM] GET /websocket -> http://remoteAddress:8081/websocket
[HPM] Upgrading to WebSocket

因此,我的控制台日志中没有打印任何内容,似乎未建立连接。 Web部件中也没有打印任何内容。如果我尝试从代码内部触发连接,同样会再次发生(在服务器控制台上添加两行),chrome dev工具选项卡如下所示:[https://prnt.sc/ju8fw3][3].

所以欢迎任何关于让这种代理工作的建议。它甚至不必是同一个库。似乎我很接近它,但还不能让它工作。

0 个答案:

没有答案