У меня есть программа чата, которая передает данные JSON из Apache / PHP в Node.js через сокет TCP:
// Node.js (Javascript)
phpListener = net.createServer(function(stream)
{
stream.setEncoding("utf8");
stream.on("data", function(txt)
{
var json = JSON.parse(txt);
// do stuff with json
}
}
phpListener.listen("8887", 'localhost');
// Apache (PHP)
$sock = stream_socket_client("tcp://localhost:8887");
$written = fwrite($sock, $json_string);
fclose($sock);
Проблема в том, что строка JSON достаточно велика (болееоколо 8k), выходное сообщение разбивается на несколько частей, и анализатор JSON завершается ошибкой.PHP возвращает записанное значение $ как правильную длину строки, но обработчик события данных запускается дважды или более.
Должен ли я присоединять функцию к другому событию или есть способ кэшировать текст черезсобытия, которые не поддаются условиям гонки при большой нагрузке?Или какое-то другое решение, о котором я не думал?
Спасибо!