我有这样的事情:
//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
}
甚至可能吗?如果没有尝试建议解决方案如何获得此对象。我需要这个,因为我发送了回复。
编辑: 我想写简单的聊天。还没有代码(我有基本的引擎骨架)。 我可以写一下,但更好的选择是paint:
在图片中我没有明确提到我有var SOCKETS - 它存储所有连接套接字,所以Controller知道所有套接字。 问题是Controller,恰好是事件的一些函数监听器(对createRoom,privMessage的响应)不知道来自哪个套接字数据。
答案 0 :(得分:0)
您可以在pipe
事件中获取来源:
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);