2013-10-16 85 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