2013-10-16 50 views
0

我试图使用像这样的套接字.io和node.js: 浏览器发送一个事件给socket.io,在我调用的数据事件中另一台服务器来获取一些数据,我想用socket.emit发送一条消息给浏览器。 这看起来像:使用node.js和socket.io调用另一个套接字中的套接字

socket.on('ask:refresh', function (socket) { 
    const net = require("net"); 
    var response = new net.Socket(); 
    response.setTimeout(1000); 
    response.get_response = function (command, port, host) { 
    this.connect(port, host, function() { 
     console.log("Client: Connected to server"); 
    }); 
    this.write(JSON.stringify({ "command": command })) 
    console.log("Data to server: %s", command); 
    }; 
    response.on("data", function (data) { 
    var ret = data.toString(); 
    var tmp_data = JSON.parse(ret.substring(0, ret.length - 1).toString()); 
    var data = new Object(); 
    var date = new Date(tmp_data.STATUS[0].When * 1000); 
    data.date = date.toString(); 
    socket.emit('send:refresh', JSON.stringify(data)); 
    }); 
    response.get_response("version", port, host); 
    }); 
}; 

的事情是,我无法访问“socket.emit”里面response.on。 你能解释一下我怎么能把这个放在手上吗?

非常感谢

+0

你确定'ask:refresh'处理程序获取'socket'本身作为参数吗? – Bergi

回答

4

你似乎是覆盖具有回调参数的一个实际的插座:

socket.on('ask:refresh', function(socket) { 
    // socket is different 
}); 

更改回调变量的名字,你会不会有这个问题。

+0

+1解决方案正确 – 1Mayur

+0

太棒了,非常感谢 – user2888434