Flutter의 GRPC 성능
7195 단어 firebasemonitoringgrpcflutter
GRPC를 사용하여 Flutter 앱에서 요청을 하는 경우 이러한 마법이 자동으로 시작되지 않습니다. 대신 빠른 인터셉터를 사용하여 GRPC 요청의 성능을 측정하고 Firebase에 보고할 수 있습니다.
lib/performance_interceptor.dart
import 'package:firebase_performance/firebase_performance.dart';
import 'package:grpc/grpc.dart';
class PerformanceInterceptor implements ClientInterceptor {
FirebasePerformance _performance = FirebasePerformance.instance;
Map<String, String> attributes;
PerformanceInterceptor([this.attributes = const {}]);
@override
ResponseFuture<R> interceptUnary<Q, R>(ClientMethod<Q, R> method, Q request,
CallOptions options, ClientUnaryInvoker<Q, R> invoker) {
Trace metric = _performance.newTrace(method.path);
metric.start();
this.attributes.forEach((key, value) => metric.putAttribute(key, value));
ResponseFuture<R> resp = invoker(method, request, options);
resp.then((_) {
metric.stop();
});
return resp;
}
@override
ResponseStream<R> interceptStreaming<Q, R>(
ClientMethod<Q, R> method,
Stream<Q> requests,
CallOptions options,
ClientStreamingInvoker<Q, R> invoker) {
return invoker(method, requests, options);
}
}
이 클래스는 사용하기 매우 간단합니다. GRPC 클라이언트를 구성할 때 옵션 및 채널과 함께 전달하기만 하면 됩니다.
import 'performance_interceptor.dart';
...
client = GreeterClient(
channel,
interceptors: [
PerformanceInterceptor()
],
);
각 요청과 함께 전달되어야 하는 속성(차원)을 전달할 수도 있습니다. 연결하려는 서버를 통과하고 싶습니다.
client = GreeterClient(
channel,
interceptors: [
PerformanceInterceptor({'host': hostname})
],
);
프레스토 악장! 이제 모든 간단한 GRPC 요청에 대한 성능 메트릭을 얻었습니다!
Reference
이 문제에 관하여(Flutter의 GRPC 성능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bamnet/grpc-performance-in-flutter-2fbk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)