• 跨平台
    • PHP示例代码

    跨平台

    Rpc的请求响应通过tcp协议,服务广播使用udp协议,我们只需要实现网络协议即可

    PHP示例代码

    1. <?php
    2. /**
    3. * Created by PhpStorm.
    4. * User: xcg
    5. * Date: 2019/2/27
    6. * Time: 16:02
    7. */
    8. /**
    9. * 原生php调用
    10. */
    11. $data = [
    12. 'action' => 'call1',//行为名称
    13. 'arg' => [
    14. 'args1' => 'args1',
    15. 'args2' => 'args2'
    16. ]
    17. ];
    18. $raw = serialize($data);//注意序列化类型,需要和RPC服务端约定好协议 $serializeType
    19. $fp = stream_socket_client('tcp://127.0.0.1:9527');
    20. fwrite($fp, pack('N', strlen($raw)) . $raw);//pack数据校验
    21. $data = fread($fp, 65533);
    22. //做长度头部校验
    23. $len = unpack('N', $data);
    24. $data = substr($data, '4');
    25. if (strlen($data) != $len[1]) {
    26. echo 'data error';
    27. } else {
    28. $data = unserialize($data);
    29. // //这就是服务端返回的结果,
    30. var_dump($data);//默认将返回一个response对象 通过$serializeType修改
    31. }
    32. fclose($fp);

    其他语言只需要实现tcp协议即可