Я получаю много данных на моей стороне сокета socket.io, которые могут быть или не быть полными данными, а также потенциально большими данными, поэтому мне нужно сделать это эффективным , Поэтому я попробовал свои силы при создании буфера и разбора этого приложения. Я знаю, что есть доступные потоковые/буферизирующие модули, и я мог бы подумать об их использовании, если они достигнут цели быть более эффективными. Ждем ваших ответов и возможных аргументов о том, как это сделать.Могу ли я сделать это более эффективным? Создание буфера в Javascript с помощью NodeJS, Socket.io
Обратите внимание, что пропускная способность не является моей проблемой, насколько быстро клиентский Javascript может отображать данные в удобном для браузера формате.
Вот что у меня есть.
function extended_split(str, separator, max) {
var out = [],
index = 0,
next;
while (!max || out.length < max - 1) {
next = str.indexOf(separator, index);
if (next === -1) {
break;
}
out.push(str.substring(index, next));
index = next + separator.length;
}
out.push(str.substring(index));
return out;
};
var buffer = '';
// data format "\nOP:ARGS:DATA(could be base64 or 'other' depending on OP)\0";
socket.on('ioSend', function(data) {
data = String.fromCharCode.apply(null, new Uint16Array(data));
buffer = buffer + data;
while(buffer.indexOf('\n') != -1 && extended_split(buffer, '\n', 2)[1].indexOf('\0') != -1)
{
splitted = extended_split(extended_split(buffer, '\n', 2)[1], '\0', 2);
parse = splitted[0];
buffer = splitted[1];
parse = parse.split(':');
// Do stuff with parse here
}
});
Скорость обработки данных на стороне клиента даст вам разные результаты, потому что она выполняется на разных машинах, но в среднем ее не заметно, я имею в виду текст, если ваш текст не в MB, тогда вам не стоит беспокоиться о Это. – Gntem