// grpc

gRPC

Resonance speaks gRPC natively, with server reflection so you can explore a service without hunting down its .proto files. Everything runs locally through the Rust backend.

What It Does

  • Discovers services and methods automatically via gRPC server reflection
  • Supports all four RPC kinds: unary, server-streaming, client-streaming, and bidirectional streaming
  • Connects over plaintext or TLS
  • Sends request metadata (headers) and shows response metadata and trailers
  • Edits messages as JSON, with skeletons generated from the method’s schema

Connecting to a Server

  1. Create a gRPC request — the panel switches to gRPC mode
  2. Enter the server address as host:port, e.g. localhost:50051
  3. Enable TLS for secure servers
  4. Fetch the service list via reflection, or load a .proto file directly
  5. Pick a service and method — the message editor populates with a JSON skeleton

RPC Kinds

The method kind is shown as a badge next to the selected method. Each kind behaves differently once you send:

  • Unary — one request, one response. Click Send.
  • Server-streaming — one request, a stream of responses appended to the transcript as they arrive
  • Client-streaming — send several messages, then close the stream to receive the single response
  • Bidirectional — send and receive concurrently; the transcript shows both directions

Metadata, Messages & Trailers

  • Add key-value metadata (the gRPC equivalent of headers) to the outgoing call
  • Edit the request message as JSON — the skeleton mirrors the message’s fields
  • Response metadata and trailers appear in their own response tabs

Troubleshooting

Method discovery is empty

  • The server must have the gRPC reflection service enabled
  • If reflection is unavailable, load the service’s .proto file instead

TLS handshake fails

  • Confirm the TLS toggle matches the server (plaintext vs. secure)
  • For private or self-signed CAs, configure custom CA trust in the certificate settings

Next Steps

  • Getting Started — environments and variables you can reuse in metadata
  • WebSocket — another persistent, streaming transport