我试图像这样使用socket.io和node.js: 浏览器向socket.io发送一个事件,在数据事件中我调用另一个服务器来获取一些数据,我想使用socket.emit将消息发送回浏览器。 看起来像这样:
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);
});
};
问题是我无法在response.on中访问“socket.emit”。 你能解释一下我如何能够把握这个吗?
非常感谢
答案 0 :(得分:4)
您似乎使用其中一个回调参数覆盖实际套接字:
socket.on('ask:refresh', function(socket) {
// socket is different
});
更改回调变量的名称,您将不会遇到此问题。