gpt4 book ai didi

javascript - 如何使用 node.js 为 Shiny 的应用程序做反向代理

转载 作者:行者123 更新时间:2023-11-30 19:48:51 27 4
gpt4 key购买 nike

编辑

我认为问题可能是 WebSocket 连接没有通过代理 node.js。如何授权WebSocket的连接?


我在 nodeJS 服务器上托管了一个网络应用程序。在同一个虚拟机上,我还有一个 Shiny 的服务器托管一个应用程序。当请求 somes URL 时,我使用 Node 将流量重定向到端口 3838( Shiny )。

我在 Node 上使用这段代码:

app.use('/the-shiny-app', proxy({target: 'http://localhost:3838', changeOrigin: true}));

使用此设置,当我继续访问 mydomain/the-shiny-app/* 时, Shiny 的应用程序一切正常,除非我尝试在代码框中运行代码。

当我尝试运行代码时,我在 chrome 控制台上收到此错误:

 Connection closed. Info: {"type":"close","code":4503,"reason":"The application unexpectedly exited","wasClean":true}

我所说的代码框的一个例子:

enter image description here

如果我不使用 node.js 并将流量(在操作系统级别)从端口 80 直接重定向到 3838,一切正常。

sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 3838

我不知道当我们运行代码时浏览器和 shiny 服务器之间究竟进行了什么样的交换,但也许使用的协议(protocol)被 node.js 阻止了。

最佳答案

我发现了问题。正如 Antony Gibbs 所说,您需要设置 WebSocket 升级。我正在使用 http-proxy-middleware 你可以在这里找到文档:https://github.com/chimurai/http-proxy-middleware

关于javascript - 如何使用 node.js 为 Shiny 的应用程序做反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54682172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com