Files

FinalFactory.Rendezvous.TestClient

This is a diagnostic executable for exercising Rendezvous through the same public Client and Contracts API available to a game. It is not a production game client, server browser, dedicated server, relay, account system, or gameplay host.

The executable has three explicit modes:

  • host publishes a session, maintains presence and its lease, accepts an authenticated direct peer, and answers a bounded ping/echo/ack/completion exchange;
  • browse prints compatible public listings; and
  • join selects or accepts a listing, drives traversal on its caller-owned LiteNetLib socket, proves direct traffic, reports the typed outcome, and exits.

Run dotnet run --project src/FinalFactory.Rendezvous.TestClient -- --help for the complete option reference. The repository's start-to-finish guide provides an executable local Compose setup, safe failure drill, JSON automation, and a phase-by-phase diagnostic table. A typical deployment invocation is:

export RENDEZVOUS_PUBLISHER_CREDENTIAL='<credential from the deployment boundary>'
dotnet run --project src/FinalFactory.Rendezvous.TestClient -- \
  host --service https://rendezvous.example/ --mediator rendezvous.example:9050 \
  --game space-game --environment production --region eu-central --protocol 1 \
  --script --json --exit-after-echo

Publisher credentials are accepted only through a named environment variable. There is deliberately no command-line credential option because process command lines are routinely exposed to other local tools and diagnostics. Output uses an allowlisted event model and never includes lease tokens, punch capabilities, connection tickets, raw metadata, signing material, or reusable credentials.

Script mode never prompts. Join mode selects the first compatible listing unless --listing UUID fixes the choice. --json emits one JSON object per line with version: 1; event names and the process exit codes below are stable automation contracts. A script-mode host without --run-seconds uses --timeout-seconds as its total runtime bound. New optional event properties may be added without changing the version. JSON help and usage failures are versioned events as well; informational events use stdout and failures use stderr.

Exit Meaning
0 Requested diagnostic flow completed successfully
2 Invalid command or options
3 Missing or invalid local configuration
10 HTTP, registration, browser, lease, or socket failure
11 No compatible session was available or selected
12 Authorization or traversal reached a typed terminal failure
13 A requested direct ping/echo proof did not complete
130 Caller cancellation or Ctrl+C

The client prints the selected direct endpoint category (loopback, private, or public) but never the raw endpoint. A traversal failure reports whether an authoritative dedicated fallback is available; the diagnostic does not connect to that fallback automatically. A host may publish a policy-authorized endpoint with --fallback IP:PORT. See the repository integration guide for process orchestration and topology limitations.