0Pricing
gRPC & High Performance APIs · 강의

gRPC-Web 통합

gRPC-Web 프록시를 사용해 웹 브라우저에서 직접 gRPC 통신을 활성화하는 방법을 배웁니다.

gRPC-Web 통합은(는) CoddyKit의 무료 gRPC & High Performance APIs 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 gRPC & High Performance APIs 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. gRPC & High Performance APIs 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

Bridging Browsers to gRPC

Welcome to gRPC-Web Integration!

You've learned about gRPC's power for high-performance communication. But what if you want your web browser applications to talk to gRPC services directly? That's where gRPC-Web comes in.

This lesson explores how gRPC-Web enables browser-based clients to interact with gRPC backends.

Why Browsers Need gRPC-Web

Modern browsers don't fully expose the low-level HTTP/2 features that native gRPC relies on, especially for advanced streaming capabilities.

  • No full HTTP/2 control: Browsers abstract away direct HTTP/2 frame manipulation.
  • CORS restrictions: Cross-Origin Resource Sharing (CORS) policies can complicate direct gRPC connections.
  • Limited header access: Some gRPC-specific headers might not be accessible or modifiable.

These limitations prevent a standard gRPC client from running directly in a browser.

Introducing the gRPC-Web Proxy

The core idea behind gRPC-Web is to use a proxy. This proxy sits between your browser client and your gRPC server.

  • The browser client sends requests in a gRPC-Web compatible format (often HTTP/1.1 or a restricted HTTP/2).
  • The gRPC-Web proxy translates these requests into native gRPC (full HTTP/2) and forwards them to your gRPC server.
  • It also translates the gRPC server's responses back into a format the browser client understands.

Think of it as a translator for your browser to speak gRPC.

Common Proxy Solutions

While you could write your own, several robust proxies are available:

  • Envoy Proxy: A popular, high-performance open-source edge and service proxy. It has built-in support for gRPC-Web.
  • grpcwebproxy: A dedicated proxy written in Go, specifically designed for gRPC-Web.

These tools handle the complex translation layer, allowing your gRPC server to remain a standard gRPC server.

The Communication Flow

Here's a simplified view of how a gRPC-Web call works:

  1. Browser Client: Makes an HTTP/1.1 (or restricted HTTP/2) request to the proxy.
  2. gRPC-Web Proxy: Receives the request, converts it to a standard HTTP/2 gRPC request.
  3. gRPC Server: Processes the native gRPC request and sends back a native gRPC response.
  4. gRPC-Web Proxy: Receives the gRPC response, converts it back to an HTTP/1.1 (or restricted HTTP/2) response.
  5. Browser Client: Receives and processes the converted response.

Protobuf for Web Clients

Just like with regular gRPC, you define your service and messages using Protocol Buffers (Protobuf).

To generate client-side code for browsers, you use a special Protobuf plugin, typically protoc-gen-grpc-web. This generates JavaScript or TypeScript code that works with browser environments.

This generated code knows how to format requests for the gRPC-Web proxy and parse its responses.

Example: Web Client Call

After generating your client stubs, making a gRPC-Web call from JavaScript/TypeScript looks familiar. Here's a conceptual snippet for a GreeterService:

(Note: This code is illustrative and not runnable without a full gRPC-Web setup including proto compilation, a running proxy, and server.)

import {HelloRequest} from './helloworld_pb';
import {GreeterClient} from './HelloworldServiceClientPb';

const client = new GreeterClient(
  'http://localhost:8080', // Proxy address
  null, null
);

const request = new HelloRequest();
request.setName('CoddyKit User');

client.sayHello(request, {}, (err, response) => {
  if (err) {
    console.error(err.code, err.message);
    return;
  }
  console.log(response.getMessage());
});

Server-Side Remains Standard

One of the great advantages of gRPC-Web is that your gRPC server doesn't need to know anything about it!

The server simply receives standard gRPC requests (HTTP/2) from the proxy and sends back standard gRPC responses. This means you don't need to change your existing gRPC service implementations to support browser clients.

This separation of concerns simplifies development and maintenance.

Streaming Limitations in gRPC-Web

While gRPC-Web is powerful, it has some limitations compared to native gRPC:

  • Unary RPCs: Fully supported (request-response).
  • Server Streaming: Generally supported (server sends multiple responses to one request).
  • Client Streaming: Not typically supported due to browser limitations on streaming requests.
  • Bidirectional Streaming: Not typically supported for the same reason.

For applications heavily relying on client or bidirectional streaming, native gRPC clients (e.g., in Node.js, mobile apps) are usually required.

Quick Check: gRPC-Web Purpose

Which of the following statements accurately describe the primary purpose or characteristics of gRPC-Web?

Recap: Bridging Browsers & gRPC

You've successfully learned about gRPC-Web!

  • It's a solution to enable web browser clients to interact with gRPC services.
  • It works by using a proxy (like Envoy or grpcwebproxy) to translate requests and responses.
  • Your gRPC server remains standard, unaware of the gRPC-Web layer.
  • While it supports unary and server streaming, client and bidirectional streaming are typically not supported.

This powerful tool bridges the gap, bringing the benefits of gRPC to your web applications!

자주 묻는 질문

“gRPC-Web 통합” 강의는 무료인가요?

네 — “gRPC-Web 통합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 gRPC & High Performance APIs 강의 전체를 잠금 해제할 수 있습니다. gRPC & High Performance APIs 강의에는 총 4개의 강의가 포함되어 있습니다.

“gRPC-Web 통합”에서 뭘 배우나요?

gRPC-Web 프록시를 사용해 웹 브라우저에서 직접 gRPC 통신을 활성화하는 방법을 배웁니다. 브라우저에서 직접 실행하는 실습 코드로 gRPC & High Performance APIs을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

gRPC & High Performance APIs을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 gRPC & High Performance APIs은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“gRPC-Web 통합” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 gRPC & High Performance APIs 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 gRPC & High Performance APIs 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. gRPC-Web 통합
  2. gRPCurl 및 BloomRPC
  3. 서비스 검색 패턴
  4. 서버 리플렉션 및 동적 클라이언트
← gRPC & High Performance APIs(으)로 돌아가기