我无法让前端客户端连接到HEROKU上的后端Node JS服务器。我知道heroku使用process.env.PORT来决定哪个端口可以路由套接字流量,但是由于我的客户端不会托管在同一台服务器上,我将无法访问这个不断变化的环境变量。我想知道是否有任何解决方法可以让我的前端客户端连接到Heroku上的套接字,而不必提前知道端口。
相关节点代码
var net = require('net');
var port = process.env.PORT || 9001
var mySocket;
var serverF = net.createServer(function(socket) {
mySocket = socket;
mySocket.on("connect", onConnect);
mySocket.on("data", onData);
});
function onConnect()
{
console.log("Connected to Flash");
}
serverF.listen(port);
function onData(d)
{
if(d == "exit\0")
{
console.log("exit");
mySocket.end();
server.close();
}
else
{
console.log(d);
mySocket.write(d, 'utf8');
}
}
我正在尝试使用flash作为我的前端客户端,但我尝试简化并在节点中编写一个基本客户端来运行以隔离问题并遇到同样的问题。
这是我所遇到的持续问题的延续,可在此处找到:https://stackoverflow.com/questions/32601186/creating-a-socket-server-with-nodejs-on-heroku-with-flash-as-the-client
答案 0 :(得分:0)
不,你不能只是"知道"它在哪里跑。但是,您可以使用列出的端口信息在某处设置中央注册表。一种服务注册表' lite'。
只需使用端口信息在某处发布静态站点,然后首先请求静态源。一旦你在那里解析了信息,你就可以了。
或者,如果您有资源,请在某个地方设置一个始终可用的反向代理,并且可以用来更改动态后端。