Transport TCP WebSocket HTTP2

When to use this

You need to pick the right protocol for edge clients (browser), backend services, or high-throughput internal calls.

Prerequisites


Protocol overview

TransportGG setupGraftConfig.host exampleTypical use
WebSocketDefault (--port)ws://host:8888/wsBrowser edge clients, MCP
TCP--tcpServer --tcpPort 8990tcp://host:8990Service-to-service, low overhead
HTTP/2--http2Server --http2Port 8989Per deployment configAdvanced / HTTP/2-enabled infra
In-memorySame process(unset)Dev, modular monolith

WebSocket server is always enabled. TCP and HTTP/2 are opt-in flags.

Choosing Graft transport — in-memory, WebSocket, TCP, or HTTP/2 decision flow


WebSocket (edge clients)

Gateway:

./gg ./MyLib.dll --port 8888 --httpPort 8889

Consumer:

GraftConfig.host = "ws://localhost:8888/ws";

Use WSS (wss://) behind TLS — Transport security TLS/WSS.


TCP (backend services)

Gateway:

./gg ./MyLib.dll --port 8888 --tcpServer --tcpPort 8990

Consumer:

GraftConfig.host = "tcp://order-service:8990";
GraftConfig.host = "tcp://order-service:8990";

HTTP/2

Gateway:

./gg ./MyLib.dll --http2Server --http2Port 8989 --port 8888

Enable when your infrastructure standardizes on HTTP/2. WebSocket and TCP remain the most common Graft paths today.


Verify it works

  • Telnet/curl to the chosen port
  • Successful Graft method call with GG_DEBUG=1 showing traffic on expected port

Common mistakes

MistakeFix
tcp:// but --tcpServer not setEnable --tcpServer on GG
Browser using tcp://Use ws:// for browser clients
Port mismatchAlign GraftConfig.host port with GG flags

See also