在本地使用其他设备的节点应用程序

时间:2015-04-08 19:27:28

标签: node.js networking local

我在本地网络上有一台服务器(10.0.0.12)和我的笔记本电脑(10.0.0.2)。

当我在服务器上运行curl http://10.0.0.2:3000时,它运行正常。当我在笔记本电脑上运行curl http://10.0.0.12:3000时,无法说网站不可用。

我可以通过笔记本电脑ping和ssh进入服务器。

以下是完成连接的代码:

app.set('port', (3000));

app.listen(app.get('port'), function(){
    console.log("Node app running on localhost:" + app.get('port'));
}

我尝试将ip地址传递给listen()函数,但没有区别。我尝试传递10.0.0.12(服务器的IP地址),127.0.0.10.0.0.0都具有相同的结果。

如何在本地网络上托管我的节点应用程序,并让本地网络上的每个人都能够通过浏览器访问它?

编辑:我在CentOS 7上运行。

EDIT2:当我运行netstat -lnt时,它会说:

tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN

4 个答案:

答案 0 :(得分:0)

您是否尝试过省略IP地址?然后,它应该在运行它的机器的IP地址和指定的端口上可用。

答案 1 :(得分:0)

根据医管局的建议。删除IP。

从文档中可以看出: https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback 如果省略主机名,则服务器将接受指向任何IPv4地址(INADDR_ANY)的连接。

P.S。哪个是服务器上的操作系统?

答案 2 :(得分:0)

也许你可以试试:

app.listen(3000, '0.0.0.0', function(){
    console.log("Node app running on 0.0.0.0:3000");
}

答案 3 :(得分:0)

可能的问题可能是您没有使用http模块?

var http = require('http').Server(app);

http.listen(3000, function () {
    console.log('App running on port 3000');
});

一个好的做法是将端口设置为

app.set('port', (3000));

var http = require('http').Server(app);

http.listen(app.get('port'), function () {
    console.log('App running on port ' + app.get('port'));
});