我想在不同的端口上运行两个node.js httpservers:
var http = require('http');
var dbserver = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<html><body><h2 align=center>TEST index.html.</h2></body></html>');
res.end();
});
dbserver.listen(8888);
var s = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('hello world');
res.end();
});
s.listen(8080);
我想制作Android应用程序,它将连接到AppFog主机上端口8888上的Node.js服务器,向服务器发送消息,并从中接收响应。如果我从浏览器打开我的服务器,我只需要一个简单的html页面。但我的代码不起作用。为什么呢?
答案 0 :(得分:4)
在AppFog上,您可以在此处查看有关运行节点应用的一些文档:http://docs.appfog.com/frameworks/node
一个重要的部分是如何确定要绑定的端口。在你的代码示例中,你有s.listen(8080);但是要指定的端口实际上是在env var:
中s.listen(process.env.VCAP_APP_PORT || 8080);
AppFog目前不支持为同一个应用程序打开两个端口,因此您必须将其拆分为两个应用程序,并使第二个应用程序类似地绑定到env var:
dbserver.listen(process.env.VCAP_APP_PORT || 8888);
AppFog将在几个月内获得WebSocket支持,但今天无法使用。
答案 1 :(得分:2)
嗯,好吧,我收到了AppFog支持的电子邮件答案听起来像这样:
// --------------------------------------------- -------------------------
乔,9月19日12:30(太平洋时间):嗨!
不幸的是,AppFog只支持HTTP流量,因此websockets和UDP流量不起作用。 Websocket支持在我们的路线图上,所以请继续关注!
乔 AppFog支持
// --------------------------------------------- ------------------------
所以问题不在Node.js中,而不在我的代码中,而是在AppFog上。非常感谢你的帮助!
答案 2 :(得分:1)
您当然可以在单个节点应用中的两个不同端口上运行两个不同的服务器,但如果您希望客户端代码访问这两个端口,则很可能会遇到同源规则问题(例如,运行从一个服务器加载的代码的浏览器通常不能向另一个服务器发出AJAX请求,因为同一URL上的两个不同端口被认为是两个不同的源。您的跨服务器连接能力将仅限于请求脚本(包括JSONP请求)和Websocket连接(但请记住,如果您使用的是socket.io且客户端不支持Websockets,那么套接字的回退传输方法.io使用不一定适用于跨域。