在openshift服务器上的Node应用程序中的套接字连接上ECONNREFUSED,适用于开发机器。
嗨,我正在尝试编写一个简单的应用程序,需要从我的server.js(随预安装的模板附带)进行传出套接字连接。在我的快速路线中,我有类似
的东西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.address是t process.env.OPENSHIFT_NODEJS_IP,在我的情况下是127.4.217.129。 我在我的开发机器上尝试了代码,它运行正常。但是在openshift服务器上使用ECONNREFUSED失败了。任何帮助,将不胜感激。谢谢你的时间。
答案 0 :(得分:0)
问题是Node版本0.6.25。我用节点verison 0.10创建了一个新的应用程序,相同的代码工作正常。
答案 1 :(得分:-1)
尝试这样的事情
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');
});
修改强>
我很抱歉我忽略了你正在进行外部连接。在本地复制后,我可以删除localAddress
上的Sockect.connect
进行连接。在查看文档和源代码之后,这是有道理的。由于谷歌不知道这个本地IP,连接谷歌和绑定到本地IP将无法正常工作。