Node.js 在Openshift上的节点应用程序中进行套接字连接时,ECONNREFUSED
openshift服务器上的socket connect-in-Node应用程序上的EconResult,在开发机器上工作 您好,我正在尝试编写一个简单的应用程序,需要从我的server.js(预装模板附带)建立一个传出套接字连接。在我的快车路线上,我有Node.js 在Openshift上的节点应用程序中进行套接字连接时,ECONNREFUSED,node.js,sockets,express,openshift,Node.js,Sockets,Express,Openshift,openshift服务器上的socket connect-in-Node应用程序上的EconResult,在开发机器上工作 您好,我正在尝试编写一个简单的应用程序,需要从我的server.js(预装模板附带)建立一个传出套接字连接。在我的快车路线上,我有 self.createRoutes = function() { self.routes = { }; self.routes['/asciimo'] = function(req, res) { var link = "http://
self.createRoutes = function() {
self.routes = { };
self.routes['/asciimo'] = function(req, res) {
var link = "http://i.imgur.com/kmbjB.png";
res.send("<html><body><img src='" + link + "' /></body></html>");
};
self.routes['/mycfg'] = function(req, res) {
var serviceSocket = new net.Socket();
serviceSocket.connect({port: 443, host:"www.google.com",localAddress:self.ipaddress}, function() {
console.log("connected!!");
});
serviceSocket.on("error", function (e) {
console.log("Could not connect to service " + e);
});
}
self.createRoutes=函数(){
self.routes={};
self.routes['/ascimo']=函数(req,res){
变量链接=”http://i.imgur.com/kmbjB.png";
res.send(“”);
};
self.routes['/mycfg']=函数(req,res){
var serviceSocket=new net.Socket();
serviceSocket.connect({port:443,主机:“www.google.com”,localAddress:self.ipaddress},function(){
log(“connected!!”);
});
serviceSocket.on(“错误”,函数(e){
console.log(“无法连接到服务”+e);
});
}
}
self.address是t process.env.OPENSHIFT_NODEJS_IP,在我的例子中是127.4.217.129。
我在我的开发机器上试过这个代码,效果很好。但在openshift服务器上使用EconnReflection失败。任何帮助都将不胜感激。谢谢您的时间。试试这样的方法
var host = process.env.OPENSHIFT_NODEJS_IP;
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
var WebSocketServer = require('ws').Server,
wss = new WebSocketServer({host: host, port: port});
wss.on('connection', function(ws) {
ws.on('message', function(message) {
console.log('received: %s', message);
ws.send(message);
});
ws.send('something');
});
编辑
抱歉,我忽略了您正在进行外部连接。在本地复制后,我可以通过删除
socket.connect上的localAddress
进行连接。在看了文档和源代码之后,这是有意义的。与谷歌建立连接并绑定到本地ip将不起作用,因为谷歌不知道该本地ip 试试这样吧
var host = process.env.OPENSHIFT_NODEJS_IP;
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
var WebSocketServer = require('ws').Server,
wss = new WebSocketServer({host: host, port: port});
wss.on('connection', function(ws) {
ws.on('message', function(message) {
console.log('received: %s', message);
ws.send(message);
});
ws.send('something');
});
编辑
抱歉,我忽略了您正在进行外部连接。在本地复制后,我可以通过删除socket.connect上的localAddress
进行连接。在看了文档和源代码之后,这是有意义的。与谷歌建立连接并绑定到本地ip将不起作用,因为谷歌不知道该本地ip 问题是节点版本0.6.25。我用node verison 0.10创建了一个新应用程序,同样的代码运行良好。问题出在node版本0.6.25。我用node verison 0.10创建了一个新的应用程序,同样的代码工作正常。没问题,谢谢你的回复。通过删除localAddress
,它仍然会在openshift服务器上显示ECONNREFUSED
。我还尝试了我的公开openShift URL“…rhcloud.com”,但结果是一样的。这很奇怪,我运行了这个奇怪的程序,我在我的装备上运行了节点0.10.5,我能够连接。谢谢你的回复。我做了一个console.log(process.versions),发现我的opneshift应用程序上的节点版本是0.6.20。我在package.json中将节点引擎版本更改为>=0.10.0,但似乎没有效果。你有什么建议吗?更新我尝试了“echo”0.10.15>>。openshift/markers/NODEJS_VERSION”并推动了更改,但版本仍然保持在0.6.20没有问题,谢谢你的回复。通过删除localAddress
它仍然在openshift服务器上显示EconRefused
。我还尝试了我的公共openshift URL“…rhcloud.com”“但结果是一样的。这很奇怪,我运行了这个奇怪的程序,我在我的装备上运行了这个程序,节点为0.10.5,我能够连接。谢谢你的回复。”。我做了一个console.log(process.versions),发现我的opneshift应用程序上的节点版本是0.6.20。我在package.json中将节点引擎版本更改为>=0.10.0,但似乎没有效果。你有什么建议吗?更新我尝试了“echo”0.10.15>.openshift/markers/NODEJS_VERSION”并推动了更改,但版本仍然保持在0.6.20