---
title: Interact With xahaud Using Websocket and RPC
---
The xahaud software provides both websocket and RPC interfaces that can be configured for a variety of use cases, such as submitting transactions or querying ledger history. Some users may choose to place proxy software in front of xahaud to provide encryption, load balancing, or other benefits. It is possible to install TLS certificates in the xahaud.cfg file using parameters such as `ssl_key = [/path/to/key]`.

## Configuring Websocket and RPC Ports
To enable listening ports, edit the `xahaud.cfg` file. Enabled ports are listed under the `[server]` stanza in the configuration file. Each port listed under the `[server]` section must be further defined via it's own stanza. In addition to configuring websocket or RPC ports, administrators can also configure the port used to listen for incoming peer connections (`port_peer`). On validating servers, it is ideal to remove `port_peer` from the configuration file, to avoid incoming connections. A configuration file with the peer protocol, one websocket port, and one RPC port might look like:<br></br><br></br>

```
[server]
port_peer
port_ws_public
port_rpc_public

[port_peer] # Name of the port.
protocol = peer # Required field.
port = 21337 # Required field.
ip = :: # Address of interface to bind to.

[port_ws_public]
protocol = ws
port = 16006
ip = ::
limit = 150 # Maximum number of clients allowed to connect to a given port. "0" is unlimited.
admin = [ 10.10.10.5, 10.11.11.0/24 ] # IP addresses or subnets allowed to submit [admin](/docs/features/http-websocket-apis/admin-api-methods) requests.
secure_gateway = [ 10.10.10.20, 10.15.15.0/24 ] # Addresses allowed to send X-Forwarded-For and X-User headers.

[port_rpc_public]
protocol = http
port = 16007
ip = ::
```
<br></br>
Additional configuration options for websocket and RPC connections are available in the [Example Configuration File](https://github.com/Xahau/xahaud/blob/dev/cfg/rippled-example.cfg).

## UDP RPC

xahaud supports UDP-based RPC for high-performance, low-latency queries. UDP RPC is useful for applications that need to make many rapid queries and can tolerate occasional packet loss.

To enable UDP RPC, add a UDP port definition in your `xahaud.cfg`:

```
[server]
port_udp_rpc

[port_udp_rpc]
protocol = http
port = 16008
ip = ::
transport = udp
```

UDP RPC requests use the same JSON-RPC format as HTTP RPC, but are sent as UDP datagrams. Responses are also sent via UDP. Since UDP is connectionless, each request must include all necessary context, and clients should handle potential packet loss by implementing retry logic.

**Note:** UDP RPC is best suited for read-only operations. Transaction submission should use WebSocket or HTTP RPC for reliability.
