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

jackyzhuo

后端代码:

<?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 按空字符解析后的字符串,因此无法再按规则解析。请问如何才能获取到最原始的数据呢?

2178 1 0
1个回答

jackyzhuo

已解决
$message = bin2hex($message);

  • 暂无评论
年代过于久远,无法发表回答
🔝