Разбор данных json messagepack в javascript

Я отправляю данные json на сервер websocketpp с пакетом сообщений, используя kawanet / msgpack-lite (javascript) на клиенте и msgpack / msgpack-c (C ++), чтобы распаковать их, и nlohmann / json, чтобы проанализировать их на сервере. Это идет хорошо.

Но я, очевидно, неправильно использую пакет сообщений, так как не могу правильно проанализировать возвращаемые данные.

Сервер:

if (jdata["type"] == "msg") {
std::stringstream buffer;
std::string clientmsg = jdata["data"];
jdata["cnt"] = clientmsg.length();
msgpack::pack(buffer, jdata.dump());
size_t plen = buffer.tellp();
msg->set_payload(&buffer, plen);
m_server.send(hdl, msg);
}

Клиент:

reader.onload = function (e) {
console.log("FileReader.onload(): " + reader.result);
var decoded_message = msgpack.decode(reader.result);
}
reader.readAsText(e.data);

Сбой на msgpack.decode () с

Uncaught Error: Invalid type: 0xh

При отправке JSON в виде строки в set_payload ()

msg->set_payload(jdata.dump());

хорошо передается

FileReader.onload(): {"cnt":4,"data":"test","type":"msg"}

0

Решение

Адрес std::stringstream не является указателем на его основной буфер.

Пытаться: msg->set_payload(buffer.str());,

0

Другие решения

Если это помогает: nlohmann / json теперь поддерживает MessagePack (и CBOR), так что теперь вы можете полностью реализовать свой сценарий без nlohmann / json. Увидеть https://github.com/nlohmann/json#binary-formats-cbor-and-messagepack Например.

0

По вопросам рекламы [email protected]