繁体   English   中英

握手后 Websocket 立即断开连接(鳄梨酱)

[英]Websocket disconnects immediately after handshake (guacamole)

请原谅格式错误,因为这是我在这里的第一个问题,并提前感谢您的阅读! 我目前正在编写一个远程 Web 应用程序,它利用 Apache Guacamole 来允许 RDP、VNC 和 SSH 连接。 我正在使用的组件是:

后端服务器的 Django - API 调用(数据库信息)和 Guacamole Websocket 传输; 我正在使用 Pyguacamole 和 Django 消费者来处理 Guacamole Server 通信; Reactjs 用于前端和代理; 用于反向代理的 Nginx; 所有这些都托管在 Centos Stream 8 虚拟机上

基本上,我的 websocket 无法通过代理进行通信。 当我在没有代理的情况下运行应用程序时(直接运行 localhost:3000 的 centos 中的 firefox),鳄梨酱连接有效! 虽然这是应用程序在端口 8000 上直接与 Django 服务器通信的地方。我想要的是反应应用程序为我将 websocket 通信代理到端口 8000,所以我的 nginx 代理只需要处理端口 3000 即可进行生产。

这是我为我的反应代理(src/setupProxy.js)尝试的代码:

const { createProxyMiddleware } = require('http-proxy-middleware');
let proxy_location = '';

module.exports = function(app) {
    app.use(createProxyMiddleware('/api', { target: 'http://localhost:8000', changeOrigin: true, logLevel: "debug" } ));
    app.use( createProxyMiddleware('/ws', { target: 'ws://localhost:8000' + proxy_location, ws: true, changeOrigin: true, logLebel: "debug" } ));
};

我也已经尝试使用 http://localhost:8000 作为 ws 目标 url。 此外,api 代理有效,但我不确定 ws 代理是否有效。 发出 websocket 请求后,消费者进行鳄梨酱握手,但在 websocket 可以发送回之前断开 websocket。

此外, HPM 输出显示它确实尝试升级到 websocket,但客户端立即断开连接。

如果您需要更多信息,请告诉我。

我设法找到了问题所在,虽然我觉得有必要更新此线程,但这是一个小错误。

基本上,在消费者中,我使用了 accept() 而不是 websocket_accept(),receive() 而不是 websocket_receive(),等等。 我粗心的错误,但希望这能帮助别人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM