Под нагрузкой сервер получает два JSON-сообщения склеенными
Клиент отправляет каждое сообщение отдельным вызовом send(). Сервер читает так:
char buf[4096];
ssize_t n = recv(fd, buf, sizeof buf, 0);
handleMessage(json::parse(std::string_view(buf, n)));
На тестах всё работает, а под нагрузкой парсер падает на данных вида {"op":"buy"}{"op":"sell"}. Как это исправить?
- Ввести в протокол границы: длину или разделитель
- Отправлять каждое сообщение отдельным соединением
- Увеличить буфер recv до размера сообщения
- Вызывать send с флагом, запрещающим склейку
