Я пытаюсь отправлять сообщения (байтовые массивы) из Node.js в Java через сокет TCP (сериализованный с protobuf).
Я создаю серверный сокет на стороне Java и подключаюсь к нему с узла:
var client = net.createConnection(12345, "localhost")
client.addListener("connect", function(){
client.write(serializedMsg1)
client.end(serializedMsg2)
})
На стороне java я извлекаю контент из входного потока и десериализую его:
Protocol1.parseFrom(inputStream);
Protocol2.parseFrom(inputStream);
Проблема в следующем - похоже, что только serializedMsg2
передано / десериализовано, а serializedMsg1
игнорируется. Как я понимаю, это происходит потому, что поток байтов не разделен, а размер блоков данных должен быть указан явно. Данные не должны считываться непосредственно из потока на стороне java - сначала следует читать разделенные блоки, а затем десериализовать их как байтовые массивы.