Using clients
On Node.js, you use the same clients as you do with Connect for Web, but with a transport from @connectrpc/connect-node instead of from @connectrpc/connect-web:
import { createPromiseClient } from "@connectrpc/connect";
import { createConnectTransport } from "@connectrpc/connect-node";
const transport = createConnectTransport({
httpVersion: "1.1",
baseUrl: "http://demo.connectrpc.com",
});
async function main() {
const client = createPromiseClient(ElizaService, transport);
const res = await client.say({
sentence: "I feel happy.",
});
console.log(res.sentence);
}
void main();
For details on clients (including error handling, interceptors, and accessing headers and trailers), please refer to the documentation for Web.
Under the hood, the transports from @connectrpc/connect-node
use the built-in Node modules http
, https
, and http2
instead of the fetch
API. The allows us to provide a transport for gRPC and bidi streaming. Node.js
v18 comes with fetch(), but it is limited to HTTP 1.1.
Connect
The function createConnectTransport()
creates a transport for the Connect
protocol.
The most important options for the Connect transport are as follows:
import { createConnectTransport } from "@connectrpc/connect-node";
const transport = createConnectTransport({
// Requests will be made to <baseUrl>/<package>.<service>/method
baseUrl: "https://demo.connectrpc.com",
// You have to tell the Node.js http API which HTTP version to use.
httpVersion: "2",
// Interceptors apply to all calls running through this transport.
interceptors: [],
});
gRPC
The function createGrpcTransport()
creates a transport for the gRPC protocol.
The most important options for the gRPC transport are as follows:
import { createGrpcTransport } from "@connectrpc/connect-node";
const transport = createGrpcTransport({
// Requests will be made to <baseUrl>/<package>.<service>/method
baseUrl: "https://demo.connectrpc.com",
// You have to tell the Node.js http API which HTTP version to use.
httpVersion: "2",
// Interceptors apply to all calls running through this transport.
interceptors: [],
});
gRPC-web
The function createGrpcWebTransport()
creates a Transport for the gRPC-web
protocol. Any gRPC service can be made available to gRPC-web with the
Envoy Proxy. ASP.NET Core supports gRPC-web with
a middleware.
Connect for Node and connect-go
support gRCP-web out of the box.
import { createGrpcWebTransport } from "@connectrpc/connect-node";
const transport = createGrpcWebTransport({
// Requests will be made to <baseUrl>/<package>.<service>/method
baseUrl: "https://demo.connectrpc.com",
// You have to tell the Node.js http API which HTTP version to use.
httpVersion: "2",
// Interceptors apply to all calls running through this transport.
interceptors: [],
});