Javascript 将本地Nodejs应用程序连接到部署在Heroku上的服务器

Javascript 将本地Nodejs应用程序连接到部署在Heroku上的服务器,javascript,node.js,express,heroku,Javascript,Node.js,Express,Heroku,我正在尝试构建一个应用程序,将本地节点js应用程序连接到Heroku上部署的节点js应用程序, 应用程序的想法是让客户端连接到Heroku服务器,然后服务器连接到本地应用程序,并从本地应用程序检索数据,然后发送回服务器,然后服务器用数据响应客户端,因此,我正在尝试将本地应用程序与服务器连接,并将套接字保存在全局变量clientSocket上,以便可以重用套接字向本地应用程序发送消息 问题是,当本地应用程序和服务器都在本地系统上时,当我在Heroku上部署服务器后尝试连接到服务器时,我成功地将其连

我正在尝试构建一个应用程序,将本地节点js应用程序连接到Heroku上部署的节点js应用程序, 应用程序的想法是让客户端连接到Heroku服务器,然后服务器连接到本地应用程序,并从本地应用程序检索数据,然后发送回服务器,然后服务器用数据响应客户端,因此,我正在尝试将本地应用程序与服务器连接,并将套接字保存在全局变量clientSocket上,以便可以重用套接字向本地应用程序发送消息

问题是,当本地应用程序和服务器都在本地系统上时,当我在Heroku上部署服务器后尝试连接到服务器时,我成功地将其连接到了服务器。我无法连接到服务器

服务器代码:

const net = require("net");
const httpServer = require("./server");
const dotenv = require("dotenv");

dotenv.config();
global.clientSocket = undefined;
let registeredClient = false;

const proxyServer = net.createServer((socket) => {
    socket.on("data", (data) => {
        if (!data) {
            socket.write("Error in request");
            throw new Error("Request message is empty");
        }
        let request;
        try {
            request = data.toString();
        } catch (error) {
            console.log(
                new Error("Request message can not be conveted to String")
            );
            throw error;
        }

        if (request.includes("HTTP")) {
            const httpSocket = new net.Socket();
            if (!registeredClient) {
                registeredClient = httpServer.setClientSocket(clientSocket);
                console.log("Client registered");
            }

            httpSocket.connect(4444, () => {
                console.log("Proxy Connected to http server");
            });

            httpSocket.on("error", (err) => {
                console.error("Proxy error: Could not connect to http server");
                throw err;
            });

            httpSocket.write(data, (err) => {
                if (err) {
                    console.error(
                        "Proxy error :Could not send data to http server"
                    );
                    throw err;
                }
            });

            httpSocket.on("data", (httpData) => {
                if (!httpData) {
                    console.error(
                        "Proxy error: unable to retrive data from http server"
                    );
                    return;
                }
                socket.write(httpData.toString());
                socket.end();
            });
        } else {
            if (!clientSocket) clientSocket = socket;
            console.log(socket);
        }
    });

    socket.on("error", (err) => {
        console.error("Proxy error: could not connect with client");
    });
});

const port = process.env.PORT || 4000;

proxyServer.listen(port, () => {
    console.log(`Proxy Server is running on port ${port}`);
});

httpServer.listen(4444, () => {
    console.log("Http server is running on port 4444");
});
以及本地应用程序代码:

const net = require("net");

let serverSocket;

serverSocket = net.connect(
    { host: "testt-clientt.herokuapp.com", port: 80 },
    () => {
        console.log("Client connected to Server");
    }
);

// serverSocket = net.connect(4000, () => {
//     console.log("Client connected to Server");
// });

serverSocket.write("Hellp");

serverSocket.on("data", (data) => {
    console.log(data.toString());
    if (data.toString().includes("GET")) {
        serverSocket.write("data ......");
    }
});

serverSocket.on("error", (err) => {
    console.error("Could not connect to Server", err);
});
PS:我尝试使用不同的端口进行连接,唯一记录消息“客户端连接到服务器”的端口是端口80,但当我连接并抛出此端口时,服务器没有保存本地连接套接字

如果有更好的办法,请告诉我

谢谢你的帮助,对于任何语言错误,英语不是我的母语,对于任何信息的缺乏,我和我都很抱歉,我对这个网站是新手