Я работаю над своего рода обратным прокси.Я не буду объяснять полную архитектуру здесь, но она требует, чтобы одна сторона отправляла идентификатор сокета, из которого она получает данные.
Упрощенный пример:
// This is an array of sockets that are waiting for connection
// from the other side
// They are indexed by ID
const sendingSockets = {};
const handlerServer = net.createServer(
(socket) => {
socket.on("data", (data) => {
const clientID = data.readInt32LE(0);
if (sockets[clientID]) {
// remaining data is the data from local client
// Can I even pipe sockets to each other like this?
socket.pipe(sockets[clientID]);
sockets[clientID].pipe(socket);
// How do I stop listenning on data?
}
else {
// Client already disconnected
socket.close();
}
})
}
);
Но яхочу только прочитать первые 4 байта .Но что если я получу только 2 байта в событии data
?Или что, если я получу больше данных (например, данные, пересылаемые с другого клиента)?
Итак, вопрос в следующем:
Как прочитать N первых байтов из потока, затемостаток канала потока без чтения байтов, но с оставшимися данными?