Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两个node.js服务器?_Javascript_Android_Node.js_Httpserver_Appfog - Fatal编程技术网

Javascript 两个node.js服务器?

Javascript 两个node.js服务器?,javascript,android,node.js,httpserver,appfog,Javascript,Android,Node.js,Httpserver,Appfog,我想在不同的端口上运行两个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 in

我想在不同的端口上运行两个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);
var http=require('http');
var dbserver=http.createServer(函数(req,res){
res.writeHead(200,{'Content-Type':'text/html'});
res.write('testindex.html');
res.end();
});
dbserver.listen(8888);
var s=http.createServer(函数(req,res){
res.writeHead(200,{'Content-Type':'text/plain'});
res.write(“你好,世界”);
res.end();
});
s、 听(8080);

我想让android应用程序连接到AppFog主机8888端口上的Node.js服务器,向服务器发送消息,并从服务器接收响应。如果我从浏览器打开服务器,我只会得到一个简单的html页面。但是我的代码不起作用。为什么?

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

好吧,好吧,好吧,我从AppFog support获得了一封电子邮件答复,听起来是这样的:

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

乔,9月19日12:30(PDT):

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

乔 AppFog支持

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


因此,问题不在Node.js中,也不在我的代码中,而是在AppFog上。非常感谢大家的帮助!

在AppFog上,您可以在此处查看一些运行节点应用程序的文档:

一个重要的部分是如何确定绑定到哪个端口。在代码示例中,您有s.listen(8080);但要指定的端口实际上在env var中:

s.listen(process.env.VCAP_APP_PORT || 8080);
dbserver.listen(process.env.VCAP_APP_PORT || 8888);
AppFog目前不支持为同一个应用打开两个端口,因此您必须将其拆分为两个应用,并将第二个应用类似地绑定到env var:

s.listen(process.env.VCAP_APP_PORT || 8080);
dbserver.listen(process.env.VCAP_APP_PORT || 8888);

AppFog将在几个月内提供WebSocket支持,但今天不可用。

错误是什么?如果对服务器进行远程登录,您将获得连接?AppFog是否允许连接到这些端口?如果(是,是)然后你必须发布你的安卓代码。我认为问题不在我的安卓应用程序中,它只是有一个按钮,点击它就会创建一个http客户端,该客户端在端口8888上打开到服务器站点test.rs.af.cm的连接。在AppFog站点上有停止/启动/重新启动服务器的工具,如果我的服务器停止,它将不会启动..提示“启动”在屏幕上并没有消失。如果我使用8080端口上的浏览器连接到我的服务器,它会显示“AppFog 404未找到”,telnet会显示“.无法打开连接。连接丢失…”在8888端口上,Tianium说“发送错误目标服务器无法响应”好的,所以AppFog不允许从这些端口传入连接。我给AppFog支持团队写了一封邮件,我也会发布他们的答案。我问这里是因为我想这里可能有人有类似的问题……我想在andr上制作一个应用程序将从服务器获取信息的oid(node.js)这将连接到数据库。但是数据库中的信息可以在网站上更改,因此我的网站不需要在8888端口上与服务器发送/接收信息,我的应用程序也不需要在8080端口上与服务器通信。你的评论不是特别清楚:在什么情况下你需要Android客户端代码联系(您的)服务器,当它收到响应时应该做什么?假设我正在制作某种图像库,并在“数据库”中描述存储在服务器上的图像,我的android应用程序按组向我显示所有图像,因此..它需要向服务器发送请求并获取这些图像和描述..或者它可以将图像存储在设备的本地存储中并从中获取所有信息。我的另一个客户端是HTML网站,它允许我在我的“数据库”。好的,您有三种类型的客户机/服务器交互:1)客户机向服务器请求图像列表;服务器发送列出图像的文档。2)客户机在收到(1)的响应后,向服务器请求(可能多次)对于图像。3)客户端捕获图像,从用户处获取注释,并将图像+注释发送到服务器以进行永久存储。仔细考虑这些要求,想出一些应用程序如何处理它们的想法,如果遇到问题,请返回此处。问题出在AppFog主机端。谢谢。