繁体   English   中英

两个node.js服务器?

[英]Two node.js servers?

我想在不同的端口上运行两个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页面。 但我的代码不起作用。 为什么?

在AppFog上,您可以在此处查看有关运行Node应用程序的一些文档: 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支持,但今天无法使用。

好吧,好吧,我收到了AppFog支持的电子邮件答案听起来像这样:

// ------------------------------------------------ ----------------------

乔,9月19日12:30(太平洋时间):

嗨!

不幸的是,AppFog只支持HTTP流量,因此websockets和UDP流量不起作用。 Websocket支持在我们的路线图上,所以请继续关注!

Joe AppFog支持

// ------------------------------------------------ ---------------------

所以问题不在Node.js中,而不在我的代码中,而是在AppFog上。 非常感谢你的帮助!

您当然可以在单个节点应用程序中的两个不同端口上运行两个不同的服务器,但如果您希望客户端代码访问它们,则很可能会遇到同源规则问题(例如浏览器)通常,从一个服务器加载的运行代码不能向另一个服务器发出AJAX请求,因为同一URL上的两个不同端口被认为是两个不同的源。 您的跨服务器连接能力将仅限于请求脚本(包括JSONP请求)和Websocket连接(但请记住,如果您使用的是socket.io且客户端不支持Websockets,那么套接字的回退传输方法.io使用不一定适用于跨域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM