gpt4 book ai didi

node.js - 如何将 websocket 连接代理到 NodeJS 中的其他 websockets

转载 作者:行者123 更新时间:2023-12-05 04:06:41 25 4
gpt4 key购买 nike

我需要在第 3 方基于网络套接字的聊天应用程序之上创建一个小型身份验证层。我有一个简单的 API (get) 可以验证来自请求的 api token 。我想做的基本上是验证他们的 token (我知道该怎么做),然后将 websocket 连接代理到实际的聊天服务器。

我一直在寻找解决方案和 this thread似乎在正确的方向上给出了一些指示,但是我无法获得任何解决方案。

var http = require('http'),
WebSocket = require('faye-websocket'),
conf = require('./conf.json');

var server = http.createServer();

server.on('upgrade', function(request, socket, body) {
console.log('upgrade fired');
var frontend = new WebSocket(request, socket, body),
backend = new WebSocket.Client('ws://echo.websocket.org');

frontend.pipe(backend).pipe(frontend);
});




server.on('connection', function(socket) {
console.log('connection')
backend = new WebSocket.Client('ws://echo.websocket.org');
console.log(backend);
socket.pipe(backend).pipe(socket);
})



server.listen(conf.port);
console.log('Listening on '+port.conf);

连接事件被触发,但是本应在 ws 连接上触发的升级事件却从未触发。

目标是首先向外部服务器验证 api key ,然后通过 websocket 连接向该 Node 服务器发出请求,打开聊天 websocket 的代理。为简单起见,我很可能会将 api key 作为获取参数传递。我也看了this package并尝试使用它,但效果不佳。

最佳答案

问题最终出现在 nginx 上。我忘了我是通过反向代理代理请求的,默认情况下 nginx 不支持 ws://连接,所以它会丢弃它。

关于node.js - 如何将 websocket 连接代理到 NodeJS 中的其他 websockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49619322/

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