菜单
开源 RSS

Client

Client 是一个可以与 gRPC 服务器交互的 gRPC 客户端。

方法描述
Client.load(importPaths, …protoFiles)加载和解析给定的协议缓冲区定义,使其可用于 RPC 请求。
Client.loadProtoset(protosetPath)加载和解析给定的 protoset 文件,使其可用于 RPC 请求。
Client.connect(address [,params])打开与给定 gRPC 服务器的连接。
Client.invoke(url, request [,params])对给定的服务/方法发起一元 RPC 并返回一个 Response
Client.close()关闭与 gRPC 服务的连接。

示例

JavaScript
import grpc from 'k6/net/grpc';

const client = new grpc.Client();
// Download quickpizza.proto for grpc-quickpizza.grafana.com, located at:
// https://raw.githubusercontent.com/grafana/quickpizza/refs/heads/main/proto/quickpizza.proto
// and put it in the same folder as this script.
client.load(null, 'quickpizza.proto');

export default () => {
  client.connect('grpc-quickpizza.grafana.com:443', { timeout: '5s' });

  const response = client.invoke('quickpizza.GRPC/RatePizza', {
    ingredients: ['Tomatoes', 'Cheese'],
    dough: 'Thin'
  });
  console.log(response.message.starsRating); // should print a number between 1-5

  client.close();
};
JavaScript
import grpc from 'k6/net/grpc';
import { check } from 'k6';

const client = new grpc.Client();
client.load([], 'authorization.proto', 'route_guide.proto');

export function setup() {
  client.connect('auth.googleapis.com:443');
  const resp = client.invoke('google.cloud.authorization.v1.AuthService/GetAccessToken', {
    username: 'john.smith@k6.io',
    password: 'its-a-secret',
  });
  client.close();
  return resp.message.accessToken;
}

export default (token) => {
  client.connect('route.googleapis.com:443');
  const metadata = {
    authorization: `bearer ${token}`,
  };
  const response = client.invoke(
    'google.cloud.route.v1.RoutingService/GetFeature',
    {
      latitude: 410248224,
      longitude: -747127767,
    },
    { metadata }
  );
  check(response, { 'status is OK': (r) => r && r.status === grpc.StatusOK });
  client.close();
};
JavaScript
import grpc from 'k6/net/grpc';
import { check } from 'k6';

const client = new grpc.Client();
client.load([], 'language_service.proto');

export default () => {
  if (__ITER == 0) {
    client.connect('language.googleapis.com:443');
  }
  const response = client.invoke('google.cloud.language.v1.LanguageService/AnalyzeSentiment', {});
  check(response, { 'status is OK': (r) => r && r.status === grpc.StatusOK });
  // Do NOT close the client
};