My solution to this problem is to send JSON messages, each of which ends with a special Unicode character. A character you'll never get in a JSON string. Call it TERM.
, "JSON.stringify(message) + TERM;" .
TERM JSON.parse(), .
, , , . :
s.on("data", function (data) {
var info = data.toString().split(TERM);
info[0] = fragment + info[0];
fragment = '';
for ( var index = 0; index < info.length; index++) {
if (info[index]) {
try {
var message = JSON.parse(info[index]);
self.emit('message', message);
} catch (error) {
fragment = info[index];
continue;
}
}
}
});
"" - , .
? Unicode '\ uFFFD'. , , "\ r\n", "\n" "\ r\n"
, , ..