Прочитайте первые 4 байта из сокета, а затем перешлите остальные в другой сокет - PullRequest
0 голосов
/ 29 мая 2018

Я работаю над своего рода обратным прокси.Я не буду объяснять полную архитектуру здесь, но она требует, чтобы одна сторона отправляла идентификатор сокета, из которого она получает данные.

Упрощенный пример:

// 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 первых байтов из потока, затемостаток канала потока без чтения байтов, но с оставшимися данными?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...