如何在 Node 中为 websocket 做代理

Posted

技术标签:

【中文标题】如何在 Node 中为 websocket 做代理【英文标题】:how to do a proxy for a websocket in Node 【发布时间】:2018-05-24 04:45:18 【问题描述】:

在 Node 中,我可以通过以下方式执行 http 代理:

https://localhost:443 -> http://localhost:8100

使用以下代码:

var express = require('express');
var app = express();
var https = require('https');
var httpProxy = require('http-proxy');
...
app.use(function (req, res, next) 
    httpProxy.createServer(
        target: 
            host: 'localhost',
            port: 8100,
        
    ).web(req, res);
);
...
https.createServer(sslOptions, app).listen(443, function()
    console.log('App running on port: 443');
);

但我还需要通过以下方式对 Web 套接字进行类似的重定向:

wss://localhost:8107 -> ws://localhost:8100

您对我该如何实现这一点有任何想法吗?

谢谢!

【问题讨论】:

也许这会有所帮助***.com/questions/23686379/… 您可以查看@davidesp 的答案吗?如果对您不起作用,请发表评论 【参考方案1】:

http-proxy 模块 supports websockets

只要做:

httpProxy.createServer(
  target: 'ws://localhost:8100',
  ws: true
).listen(8107);

【讨论】:

以上是关于如何在 Node 中为 websocket 做代理的主要内容,如果未能解决你的问题,请参考以下文章

在 Node JS 中为 WebSocket (ws) 使用自签名 CA 证书

如何解决Vue.js里面noVNC的截图问题——蛋疼的cookies验证和node.js的websocket代理

Node.js - 具有 WebSocket 代理和 SSL 支持的良好 WebServer?

如何在NodeJS中代理websocket连接到其他websockets

基于 Unix Socket 的可靠 Node.js HTTP 代理实现(支持 WebSocket 协议)

使用来自 certbot 的 ssl 将 websocket nginx 代理设置为 node.js