Javascript 使用node.js和socket.io在另一个套接字中调用套接字

Javascript 使用node.js和socket.io在另一个套接字中调用套接字,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,我正在尝试使用socket.io和node.js,如下所示: 浏览器向socket.io发送一个事件,在数据事件中,我调用另一台服务器获取一些数据,我想使用socket.io向浏览器发回一条消息。 这看起来像: socket.on('ask:refresh', function (socket) { const net = require("net"); var response = new net.Socket(); response.setTimeout(1000);

我正在尝试使用socket.io和node.js,如下所示: 浏览器向socket.io发送一个事件,在数据事件中,我调用另一台服务器获取一些数据,我想使用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);
  });
};
问题是我无法访问response.on中的“socket.emit”。 你能解释一下我怎么能帮上忙吗


非常感谢

您似乎正在使用回调参数之一覆盖实际套接字:

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

更改回调变量的名称,您就不会遇到此问题。

您似乎正在用回调参数之一覆盖实际套接字:

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

更改回调变量的名称,您将不会遇到此问题。

是否确定
ask:refresh
处理程序将
socket
本身作为参数获取?是否确定
ask:refresh
处理程序将
socket
自身作为参数获取?