问题标签 [msgpack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4353 浏览

serialization - MessagePack:快速的跨平台序列化器和 RPC - 请分享经验

在寻找一些快速、简单和稳定的 RPC 库时,我偶然发现了MessagePack项目,它似乎非常好。它也在积极开发中。

如果你以任何方式使用它,你能分享你的经验吗?

PS我认为这个问题应该是社区维基

0 投票
1 回答
3563 浏览

c++ - 用户定义的类序列化、C++ 和 msgpack


我很新尝试msgpack。我需要序列化一个包含指针(内部树、哈希等)和一些基本类型属性的对象(用户定义类的实例)。

到目前为止,我可以做 msgpack.org wiki 的快速示例中所做的事情,只需将类序列化为 a msgpack::sbuffer,然后读取缓冲区以进行反序列化。

但是现在,我想将该缓冲区发送到一个文件,或者将序列化结果发送到一个文件,然后对其进行反序列化。
谁能给我一些关于如何做的提示?我浏览和阅读足以厌倦它:)

我的代码如下所示:

谢谢大家!
最好的,
Luchux。

0 投票
6 回答
70631 浏览

serialization - 高性能实体序列化:BSON vs MessagePack(vs JSON)

最近我发现了MessagePack,这是一种替代谷歌协议缓冲区JSON的二进制序列化格式,它也优于两者。

还有MongoDB 用于存储数据的BSON序列化格式。

有人可以详细说明BSON 与 MessagePack 的区别和劣势吗?


只是为了完成高性能二进制序列化格式的列表:还有Gobs 将成为 Google 的 Protocol Buffers 的继任者。然而,与所有其他提到的格式相比,这些格式与语言无关并且依赖于Go 的内置反射,还有 Gobs 库至少适用于 Go 以外的其他语言。

0 投票
3 回答
2660 浏览

objective-c - Objective-C 的 MessagePack 实现

是否有针对 Objective-C的MessagePack协议的实现?

如果没有,是否有将 C 实现桥接到 Objective-C 类型的示例?

0 投票
2 回答
1781 浏览

c++ - MsgPack 中的 free()/delete 不匹配

我尝试在我的程序中使用 Msgpack。有人可以帮助我提供来自 msgpack wiki 的下一个示例(流式传输功能):http ://wiki.msgpack.org/pages/viewpage.action?pageId=1081387并提供更正确的使用此库和流式传输功能的示例。

Valgrind 说它有下一个错误:

0 投票
4 回答
10035 浏览

http - msgpack 的 MIME 类型?

msgpack似乎是一种非常快的数据序列化格式,即使是非常新的格式。它有公认的 MIME 类型吗?如果没有,在此期间应该使用什么?

0 投票
1 回答
1607 浏览

c++ - C++ MsgPack:链接器错误

我正在尝试编译消息包(http://msgpack.org/)示例代码并不断收到这些我无法深入了解的错误:

g++ -o"MsgPack2" ./src/MsgPack2.o -lmsgpack -lmsgpackc

未定义的msgpack::rpc::server::listen(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)' ./src/MsgPack2.o: In function循环引用:/usr/local/include/msgpack/rpc/loop.h:30:未定义 mp::wavy::loop::loop()' ./src/MsgPack2.o: In function的引用基数:/usr/local/include/msgpack/rpc/server.h:59:未定义的 msgpack::rpc::server::server(msgpack::rpc::loop)' /usr/local/include/msgpack/rpc/server.h:59: undefined reference to msgpack引用::rpc::server::serve(msgpack::rpc::dispatcher*)' /usr/local/include/msgpack/rpc/server.h:59: 未定义对 msgpack::rpc::server::~server()' ./src/MsgPack2.o: In function~base'的引用:/usr/local/include /msgpack/rpc/server.h:64:未定义对 msgpack::rpc::server::~server()' ./src/MsgPack2.o: In function myserver::dispatch(msgpack::rpc::request)' 的引用:/mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:14 : 对msgpack::rpc::request::method()' /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:18: undefined reference tomsgpack::rpc::request::params()' 的 未定义引用./src/MsgPack2.o: 在函数msgpack::rpc::loop_util<msgpack::rpc::session_pool>::run(unsigned long)': /usr/local/include/msgpack/rpc/loop_util.h:34: undefined reference tomsgpack::rpc::session_pool::get_loop()' /usr/local/include/msgpack/rpc /loop_util.h:34:未定义的引用mp::wavy::loop::run(unsigned long)' ./src/MsgPack2.o: In functionvoid msgpack::rpc::request::call(int&, msgpack::type::nil&)': /usr/local/include/msgpack/rpc/request.h:119: 未定义对msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference tomsgpack::rpc::的引用request::get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: undefined reference to msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In functionvoid msgpack::rpc::request::call(msgpack::type::nil&, unsigned char& )': /usr/local/include/msgpack/rpc/request.h:119: 未定义对msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference tomsgpack::rpc::request::get_msgid() 的引用 const' /usr/local/include/msgpack/rpc/request. h:125:对msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In functionvoid msgpack::rpc::request::call、std::allocator 的未定义引用 >

(msgpack::type::nil&, std::basic_string, std::allocator >&)': /usr/local/include/msgpack/rpc/request.h:119: 未定义对msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference tomsgpack::rpc::request的引用::get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: 未定义引用msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In function__shared_count': /usr/include/c++/4.5/tr1/shared_ptr.h:121: 未定义引用 mp::wavy::loop::~loop()' ./src/MsgPack2.o: In function std::tr1::_Sp_deleter::operator()(mp::wavy::loop*) const': /usr/include/c++/4.5/tr1/shared_ptr.h:99: 未定义引用`mp::wavy ::loop::~loop()' collect2: ld 返回 1 退出状态 make: * [MsgPack2] 错误 1

这是代码:

如果有人有任何想法,将不胜感激。

提前谢谢了,

0 投票
1 回答
287 浏览

c - 传递给“msgpack_pack_int()”宏的计数器变量不增加

我有一个非常奇怪的问题,试图运行这个使用zmqmsgpack的非常简单的C 程序

没有问题server.c,但是clinet.c:39有这个msgpack_pack_int (&mpkg, i);,并且 的值i似乎被拾取为0并且在每次迭代中都不会改变。我尝试了很多不同的事情(例如,创建一个指向 i并使用它的指针,还尝试将其拆分为一个函数等),但似乎没有任何帮助。我可以看到这msgpack_pack_int()是一个宏,但为什么它会引入这种行为,我能做些什么来克服它?是否有一个标志可以改变这种宏的行为(因为我看到它扩展为内联函数)......我已经尝试过-Werror -Wall,使用gccand clang,也没有任何警告出现;(*

我尝试调试它并按i预期递增。

我什至试过这个,无论如何它都会做同样的事情:

我什至尝试过一些本应不同的东西,但这里也没有运气 -

谁能明白为什么会这样?

更新 1:我还重新编译了 msgpack 库本身,没有优化标志,这也没有改变行为。

更新 2:从 git repo 安装了 msgpack,我仍然遇到同样的问题。

0 投票
4 回答
9462 浏览

java - 在 Android 中使用 MessagePack

有人尝试过使用MessagePackAndroid 应用程序吗?
可能吗?我尝试使用 Jarmsgpack-java并收到以下异常:

我使用的代码非常简单

我的目录中有javassist.jar,msgpack-0.5.2.jar和。 slf4j-api-1.6.2.jarslf4j-jdk14-1.6.2.jarlib

在我的服务器应用程序中,此代码适用于相同的库。

0 投票
1 回答
982 浏览

javascript - msgpack 的 Sinatra 二进制返回——字符集问题/字符在某处被转换?

我目前正在尝试从 ruby​​ sinatra 服务返回 msgpack http://msgpack.org/并使用 javascript 解析它。我正在使用此处找到的 javascript 库:https ://github.com/uupaa/msgpack.js/ (尽管我认为这与这个问题无关)。

我有一个使用 msgpack gem 执行以下操作的 sinatra 服务:

我有 javascript 读取如下:

问题是当我取回数据时,许多字符已从其服务器端版本转换为0xfffd.

然后我尝试了两种变体:

在服务器端。前者没有改变任何东西,但后者更接近了,除了一个例外,大部分信息都保持不变:第一个字符从转换0x820x201a.

我怀疑有一个字符集/内容类型的组合可以解决这个我还没有尝试过的问题。我也总是可以退回到 Base64,但我想先了解如何在没有 Base64 的情况下让它工作。