连接到azure虚拟机上的Node.js服务器

连接到azure虚拟机上的Node.js服务器,node.js,azure,virtual-machine,tcpserver,Node.js,Azure,Virtual Machine,Tcpserver,我在Azure上创建了一个虚拟机,并定义了一个TCP端点。然后,我创建了Node.js TCP服务器,如下所示: var net = require('net'); var host = '127.0.0.1'; var port = 8000; var times = 1; net.createServer(function (socket) { console.log('CONNECTED: ' + socket.remoteAddress + ':' + socket.remotePor

我在Azure上创建了一个虚拟机,并定义了一个TCP端点。然后,我创建了Node.js TCP服务器,如下所示:

var net = require('net');
var host = '127.0.0.1';
var port = 8000;
var times = 1;

net.createServer(function (socket) {
console.log('CONNECTED: ' + socket.remoteAddress + ':' + socket.remotePort);

socket.on('data', function (msg) {
    console.log("Message received is: " + msg);
    if (times == 1)
        socket.write("Server says HI");
    times++;
    executeStatement();
});

socket.on('close', function (data) {
    console.log('CLOSED: ' + socket.remoteAddress + ' ' + socket.remotePort);
});
}).listen(port, host);

console.log('System waiting at http://localhost:8000');

我能够在同一台主机上连接到服务器,因此同一台机器上不同端口上的两个应用程序可以双向通信。当我尝试通过公共IP地址和端口号连接到虚拟机时,它失败了。我尝试在虚拟机上为专用端口(8000)添加入站防火墙规则,但这也没有什么区别。请告诉我一些有助于解决此问题的想法和/或链接。

不知何故,主机是127.0.0.1导致了此问题。我删除了它,让服务器只在端口上侦听,即侦听(端口)。执行此操作后,我能够检测到端口已打开,然后远程计算机上的程序能够与虚拟机进行双向通信。

当您将HTTP服务器绑定到地址127.0.0.1时,您只在网络上侦听传入的请求。这意味着来自其他设备的任何请求,即使在同一网络上,也无法到达您的服务


省略IP地址将导致服务侦听主机上的任何可用IP地址-请参阅。请注意,一些托管提供商将要求您的应用程序监听特定的IP地址,以便能够服务请求(即)。

您是否创建了一个端点,将一些公共端口(例如8000)映射到内部端口8000?您好。是的。我设法解决了这个问题。我现在就把答案贴出来。