在Openshift上的Node应用程序中的套接字连接期间ECONNREFUSED

时间:2014-02-27 18:34:17

标签: node.js sockets express openshift

在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失败了。任何帮助,将不胜感激。谢谢你的时间。

2 个答案:

答案 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将无法正常工作。