У меня nodejs, прослушивающий порт tcp и получающий содержимое из Flash XMLSocket. Если я пытаюсь отправить много данных в одном сообщении из флэш-памяти (XMLSocket.send(long_message)
), я всегда получаю событие stream.on("data", function(d) {
, которое запускается при передаче всего сообщения.
XMLSocket Flash передает данные в виде строки в кодировке UTF8, заканчивающейся нулевым байтом.
Как я могу контролировать согласованность своих сообщений?
UPDATE
Я нашел похожий вопрос здесь . Но нет четкого ответа. Я знаю, что конец моего сообщения должен быть нулевым байтом, но не могли бы вы дать мне пример того, как сохранить неполное сообщение и избежать наложения на следующее / одновременное сообщение
UPDATE2
После ответа maerics я сделал что-то вроде
var server = net.createServer(function(stream) {
var dataBlock = "";
stream.on("data", function(d) {
processChunk(d);
});
function processChunk(data) {
var chunks = data.split("\0");
while (chunks.length > 1) {
if (dataBlock.length > 0) {
dataBlock += chunks.shift();
processIncompingMessage(dataBlock);
dataBlock = "";
}
else {
processIncompingMessage(chunks.shift());
}
}
dataBlock += chunks.shift();
}
}