Closed kpengk closed 5 months ago
客户端通过publish发送8字节的字符串数据ABCDEFGH,服务端通过register_handler注册publish处理函数。
publish
ABCDEFGH
register_handler
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)); }
server, msg size:9, msg:ˋBCDEFGH
客户端rpc_client.hpp在publish字符串时,通过msgpack对数据进行了打包,在服务端未进行相应解包导致。
rpc_client.hpp
谢谢报告,晚点看。
已经处理了,见单测:https://github.com/qicosmos/rest_rpc/blob/master/tests/test_rest_rpc.cpp#L210 可以拉最新代码验证一下。
测试用例及结果
客户端通过
publish
发送8字节的字符串数据ABCDEFGH
,服务端通过register_handler
注册publish
处理函数。ABCDEFGH
,服务端publish
函数内接收到9字节数据。原因分析
客户端![image](https://github.com/qicosmos/rest_rpc/assets/52434207/a743dc54-10b2-4bf6-9a42-eec336029d29)
rpc_client.hpp
在publish
字符串时,通过msgpack对数据进行了打包,在服务端未进行相应解包导致。