客户端publish字符串数据,服务端接收的数据错误
Closed this issue · 2 comments
kpengk commented
测试用例及结果
客户端通过publish
发送8字节的字符串数据ABCDEFGH
,服务端通过register_handler
注册publish
处理函数。
- 服务端
int main() {
rpc_server server(9000, 1);
server.register_handler("publish_by_token", [&](rpc_conn conn, std::string key, std::string token, std::string val) {
std::cout << "server, msg size:" << val.size() << ", msg:" << val << "\n";
});
server.register_handler("publish", [&](rpc_conn conn, std::string key, std::string token, std::string val) {
std::cout << "server, msg size:" << val.size() << ", msg:" << val << "\n";
});
server.run();
}
- 客户端
int main() {
rest_rpc::rpc_client client("127.0.0.1", 9000);
client.connect();
client.publish("msg", "ABCDEFGH");
std::this_thread::sleep_for(std::chrono::seconds(3));
}
- 运行结果
客户端发送8字节的字符串数据ABCDEFGH
,服务端publish
函数内接收到9字节数据。
server, msg size:9, msg:ˋBCDEFGH
原因分析
客户端rpc_client.hpp
在publish
字符串时,通过msgpack对数据进行了打包,在服务端未进行相应解包导致。
qicosmos commented
谢谢报告,晚点看。
qicosmos commented
已经处理了,见单测:https://github.com/qicosmos/rest_rpc/blob/master/tests/test_rest_rpc.cpp#L210
可以拉最新代码验证一下。