fix issues from #new-listing-dev thread use yarn workspaces for package install
DLOB Server
This is the backend server that provides a REST API for the drift DLOB.
Run the server
Setup
The build dependencies
git submodule update --init
bash build_all.sh
First set the necessary environment variables:
cp .env.example .env
Environment Configuration
To properly configure the DLOB server, set the following environment
variables in your .env file:
| Variable | Description | Example Value |
|---|---|---|
ENDPOINT |
The Solana RPC node http endpoint. | https://your-private-rpc-node.com |
WS_ENDPOINT |
The Solana RPC node websocket endpoint. | wss://your-private-rpc-node.com |
USE_WEBSOCKET |
Flag to enable WebSocket connection. | true |
USE_ORDER_SUBSCRIBER |
Flag to enable order subscriber DLOB source. | true |
DISABLE_GPA_REFRESH |
Flag to disable periodic refresh using
getProgramAccounts. |
true |
ENV |
The network environment the server is connecting to. | mainnet-beta |
PORT |
The port number the HTTP server listens on. | 6969 |
METRICS_PORT |
The port number for Prometheus metrics. | 9465 |
PRIVATE_KEY |
Path to the Solana private key file. | /path/to/keypair.json |
RATE_LIMIT_CALLS_PER_SECOND |
Maximum number of API calls per second. | 100 |
PERP_MARKETS_TO_LOAD |
Number of perpetual markets to load at startup. | 0 |
SPOT_MARKETS_TO_LOAD |
Number of spot markets to load at startup. | 5 |
ELASTICACHE_HOST |
(for websocket server) Redis host endpoint. | localhost |
ELASTICACHE_PORT |
(for websocket server) Redis port. | 6379 |
REDIS_CLIENT |
(for websocket server) Redis client type (DLOB/DLOB_HELIUS). | DLOB |
WS_PORT |
(for websocket server) The port to run the websocket server on. | 3000 |
Note: multiple Redis hosts can be provided by providing a comma separated string.
HTTP mode
The HTTP server as documented here
can be run with, and by default accessible on
http://127.0.0.1:6969:
yarn run dev
Websocket mode
The websocket server has 2 components, the
dlob-publisher that takes frequent snapshots of the DLOB
and publishes them to Redis, and ws-manager listens for new
connections and sends the latest DLOB to ws clients, the two components
communicate through Redis pub-sub.
To run the websocket server, a Redis cache is required, and the following environment variables must be set:
REDIS_HOSTSREDIS_PASSWORDSREDIS_PORTS
In the first terminal, start the redis cluster:
bash redisCluster.sh start
bash redisCluster.sh create
In second terminal, run:
yarn run dlob-publisher
In a third terminal, run:
yarn run ws-manager
Then connect to the ws server at ws://127.0.0.1:3000
When you're done, stop the redis cluster:
bash redisCluster.sh stop
Run the example client
Documentation for connecting to the dlob server are available here
TODO: complete client examples.
%20(1).png)