连接到 Azure 虚拟机上的 Node.js 服务器
Connecting to Node.js server on azure virtual machine
我在 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');
我能够在同一台主机上连接到服务器,因此同一台机器上不同端口上的两个应用程序可以双向通信。当我尝试通过 public IP 地址和端口号连接到虚拟机时,它失败了。我尝试在虚拟机上为专用端口 (8000) 添加入站防火墙规则,但这也没有什么区别。拜托,有人可以给我一些想法 and/or 有助于解决此问题的链接。
不知何故,将主机声明为 127.0.0.1 导致了问题。我删除了它并让服务器只监听端口,即 listen(port)。这样做之后,我能够检测到该端口已打开,然后我在远程计算机上的程序就可以与虚拟机进行双向通信了。
当您将 HTTP 服务器绑定到地址 127.0.0.1 时,您仅在 local loopback interface 上侦听传入请求。这意味着来自其他设备的任何请求,即使在同一网络上,也将无法到达您的服务。
省略 IP 地址将导致服务侦听主机上任何可用的 IP 地址 - 请参阅 Node.js docs. Note that some hosting providers will require your application to listen on specific IP address in order to be able to serve requests (i.e. Openshift)。
我在 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');
我能够在同一台主机上连接到服务器,因此同一台机器上不同端口上的两个应用程序可以双向通信。当我尝试通过 public IP 地址和端口号连接到虚拟机时,它失败了。我尝试在虚拟机上为专用端口 (8000) 添加入站防火墙规则,但这也没有什么区别。拜托,有人可以给我一些想法 and/or 有助于解决此问题的链接。
不知何故,将主机声明为 127.0.0.1 导致了问题。我删除了它并让服务器只监听端口,即 listen(port)。这样做之后,我能够检测到该端口已打开,然后我在远程计算机上的程序就可以与虚拟机进行双向通信了。
当您将 HTTP 服务器绑定到地址 127.0.0.1 时,您仅在 local loopback interface 上侦听传入请求。这意味着来自其他设备的任何请求,即使在同一网络上,也将无法到达您的服务。
省略 IP 地址将导致服务侦听主机上任何可用的 IP 地址 - 请参阅 Node.js docs. Note that some hosting providers will require your application to listen on specific IP address in order to be able to serve requests (i.e. Openshift)。