Node.js 如何在node';s http代理是否允许通过代理连接websocket?

Node.js 如何在node';s http代理是否允许通过代理连接websocket?,node.js,websocket,node-http-proxy,Node.js,Websocket,Node Http Proxy,我正在尝试使用节点HTTP代理模块创建一个HTTP代理服务器,但我还希望在代理服务器中支持WebSocket。为此,我在upgrade方法上注册了一个事件监听器,如下面的代码,如果我将本地代理服务器的URL传递给WebSocket的代理密钥,它将非常有效 httpServer.on("upgrade", function(req, sock, head) { console.log("upgrade called") let reqUrl = req.url let h

我正在尝试使用
节点HTTP代理
模块创建一个HTTP代理服务器,但我还希望在代理服务器中支持WebSocket。为此,我在
upgrade
方法上注册了一个事件监听器,如下面的代码,如果我将本地代理服务器的URL传递给WebSocket的代理密钥,它将非常有效

httpServer.on("upgrade", function(req, sock, head) {
    console.log("upgrade called")

    let reqUrl = req.url
    let hostPath = reqUrl.split("//")[1]
    let wsUrl = `ws://${hostPath}`

    proxy.ws(req,sock,head, {
            target: wsUrl,
            ws: true,
            autoRewrite: true,
            changeOrigin: true
    })
})
但当我在google chrome中使用本地proxyServer的URL作为HTTP代理URL,然后尝试使用任何WebSocket代码时,它不会调用我的代理的升级方法,相反,chrome调用connect方法。因此,我还监听了HTTP服务器的
connect
方法,并在connect方法的回调中进行了少量修改,编写了相同的代码。你可以在下面看到我的代码

httpServer.on("connect", (req, clientSocket, head) => {
    console.log("connect called")

    let reqUrl = req.url
    let wsUrl = `ws://${reqUrl}`

    proxy.ws(req,clientSocket,head,
        {
            target: wsUrl,
            ws: true,
            autoRewrite: true,
            changeOrigin: true
        })
})
但我的代理仍然不适用于WebSocket。如果我尝试运行var
ws=newwebsocket('ws://echo.WebSocket.org/')
在浏览器控制台中,然后我得到以下错误
WebSocket连接到'ws://echo.WebSocket.org/'失败:连接建立错误:net::ERR_EMPTY_RESPONSE
这次调用connect方法时,服务器端没有错误,但客户端的WebSocket未连接

所以我想知道,如何处理
connect
方法来允许通过代理连接WebSocket