У меня есть чат-программа, которая толкает данные 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 достаточно велика (около 8 тыс.), Выходное сообщение делится на несколько фрагментов, и синтаксический анализатор JSON терпит неудачу. PHP возвращает значение $ write как правильную длину строки, но обработчик события данных срабатывает дважды или более.
Должен ли я прикреплять функцию к другому событию или есть способ кэшировать текст во время пожаров событий, таким образом, чтобы не поддаваться условиям гонки при большой нагрузке? Или какое-то другое решение, о котором я не думал?
Благодаря!