使用WorkerMan时,如何获取原始包数据?

发布于 2022-09-11 22:56:36 字数 687 浏览 18 评论 0

后端代码:

<?php
$worker = new Worker('tcp://0.0.0.0:12000');
$worker->onMessage = function ($connection, $message) {
    var_dump($message);
    // 输出Vv29705370U{"cmd":"cmd\_client\_query\_room\_req","node\_id":3149840,"third\_party\_id":2772311495771}
}

实际客服端发送的是二进制数据:
56760000 00000000 00000000 00323937 30353337 30000000 00000000 00550000 007b2263 6d64223a 22636d64 5f636c69 656e745f 71756572 795f726f 6f6d5f72 6571222c 226e6f64 655f6964 223a3331 34393834 302c2274 68697264 5f706172 74795f69 64223a32 37373233 31313439 35373731 7d00

这是一个特定格式的二进制,不同位数和长度需要按规则解析,但是 worker 获取到的 $message 是把 00 按空字符解析后的字符串,因此无法再按规则解析。请问如何才能获取到最原始的数据呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

随波逐流 2022-09-18 22:56:36

$message = bin2hex($message);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文