Node.js 如何获取对象哪个流?

Node.js 如何获取对象哪个流?,node.js,stream,Node.js,Stream,我有这样的想法: //open new socket for every webSocket connection **socket**.pipe(controller);//controller is writable stream of course //in controller we have: controller.prototype._write =function(chunked, encoding, callback){ //here -> how to get

我有这样的想法:

//open new socket for every webSocket connection
**socket**.pipe(controller);//controller is writable stream of course

//in controller we have:
controller.prototype._write =function(chunked, encoding, callback){ 
    //here -> how to get **socket** object which piped ?    
    //in 'this' we have controller object
}
甚至有可能吗?如果没有,请尝试建议如何获取此对象的解决方案。我需要这个,因为我发送响应

编辑: 我想写简单的聊天。还没有代码(我有基本的引擎框架)。 我可以写,但更好的选择是绘画:

在图中,我并没有明确提到我有var套接字——它存储所有连接套接字,所以控制器知道所有套接字。
问题在于,控制器,确切地说是事件的某个函数侦听器(createRoom的响应,privMessage)不知道套接字数据来自哪个套接字。

您可以在
管道上获取源代码
事件:

controller.on('pipe', function (/* **socket** */) {
    // Save a reference to the socket
});
因此,您可以创建包装以获取引用:

function wrap(controller) {

    var socket = null;

    controller.on('pipe', function (source) {
        socket = source;
    };

    controller.prototype._write =function(chunk, encoding, callback) {
        if (socket) {
            // Do something with socket
        } else {
            // Do something else
        }
    }
}
并使用以下代码:

var myController = new Controller();

wrap(myController);

mySocket.pipe(myController);

是的,我们可以。但当我调用socket.pipe(控制器)时,事件“pipe”只触发一次。我现在需要哪个套接字发送数据,并向那个套接字发送响应。有什么建议吗?@SonnyD,更新的答案,如果你能展示更多的代码,我就能理解更多你需要的。好的,我写了一些关于我想做什么的东西。在这种情况下,你不应该使用管道,因为管道假设如果源端发出事件,目标端也关闭了,你必须维护一个套接字数组(每个都有一个标识符)并且在消息中,您必须定义目标套接字及其expeditor(与通常的post mail:D一样)