rpc.dart 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import 'package:fis_jsonrpc/rpc.dart';
  2. import 'package:vitalapp/architecture/utils/json_rpc_ex_interceptor.dart';
  3. final _host = _ProxyHost();
  4. /// JSON-RPC client proxy
  5. JsonRpcProxy get rpc => _host.getProxy();
  6. class _ProxyHost {
  7. JsonRpcProxy? _proxy;
  8. /// JSON-RPC client
  9. JsonRpcProxy getProxy() {
  10. if (_proxy == null) {
  11. _init();
  12. }
  13. return _proxy!;
  14. }
  15. /// 初始化代理
  16. void _init() {
  17. _buildProxy();
  18. // _listenServerHostChange();
  19. }
  20. /// 构建代理实例
  21. void _buildProxy() {
  22. final originServerHost = _proxy?.currentHostAddress;
  23. JsonRpcProxy jsonRpcProxy = JsonRpcProxy();
  24. _proxy = jsonRpcProxy;
  25. if (originServerHost != null && originServerHost.isNotEmpty) {
  26. _setRpcHost(_proxy!, originServerHost);
  27. }
  28. // _proxy!.addInterceptor(_DefaultInterceptor());
  29. _proxy!.addInterceptor(JsonRpcExInterceptor());
  30. }
  31. // /// 监听服务地址变更
  32. // void _listenServerHostChange() {
  33. // bus.on(bus.Keys.SERVER_ADDRESS_CHANGED, (arg) {
  34. // logger.i('EventBus - [${bus.Keys.SERVER_ADDRESS_CHANGED}]: $arg');
  35. // _setRpcHost(rpc, arg);
  36. // rpc.clearCache();
  37. // });
  38. // }
  39. static void _setRpcHost(JsonRpcProxy rpc, url) {
  40. final uri = Uri.parse(url);
  41. rpc.setServerHost("${uri.host}:${uri.port}", uri.scheme == "https");
  42. }
  43. }
  44. extension JsonRpcProxyExt on JsonRpcProxy {
  45. //
  46. }