Javascript 将本地Nodejs应用程序连接到部署在Heroku上的服务器
我正在尝试构建一个应用程序,将本地节点js应用程序连接到Heroku上部署的节点js应用程序, 应用程序的想法是让客户端连接到Heroku服务器,然后服务器连接到本地应用程序,并从本地应用程序检索数据,然后发送回服务器,然后服务器用数据响应客户端,因此,我正在尝试将本地应用程序与服务器连接,并将套接字保存在全局变量clientSocket上,以便可以重用套接字向本地应用程序发送消息 问题是,当本地应用程序和服务器都在本地系统上时,当我在Heroku上部署服务器后尝试连接到服务器时,我成功地将其连接到了服务器。我无法连接到服务器 服务器代码:Javascript 将本地Nodejs应用程序连接到部署在Heroku上的服务器,javascript,node.js,express,heroku,Javascript,Node.js,Express,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,但当我连接并抛出此端口时,服务器没有保存本地连接套接字
如果有更好的办法,请告诉我
谢谢你的帮助,对于任何语言错误,英语不是我的母语,对于任何信息的缺乏,我和我都很抱歉,我对这个网站是新手