跨平台

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协议即可