Guide to listen to real-time updates through a web socket connection to the API
The TegroDEX API supports real-time market and order updates through a WebSocket connection. A web socket connection to the API can be created using the /ws
endpoint. This is demonstrated below in JavaScript but can be replicated in other languages as well using the appropriate libraries.
// Use the base url for the environment of choice
const BASE_URL = "wss://api.testnet.tegro.com"
// Using the default web socket library provided by JavaScript
const socket = new WebSocket(`${BASE_URL}/v2/ws`)
// Handling messages and callbacks from the web socket connection
socket.onmessage = handleMessage
socket.onopen = resolve
function handleMessage(response)
{
const json = JSON.parse(res.data)
/*
The JSON object has the following structure
{
"action": string,
"data": Object
}
*/
// Handling the message
}
To receive messages on these websocket connections, we first have to subscribe to a channel. The API sends messages through separate channels for every separate wallet address being used on the platform. The following code block demonstrates how to subscribe and unsubscribe from a channel.
const walletAddress = "" // Use a wallet address here
// Subscribing to a channel called `something`
this.socket.send(JSON.stringify({action: 'subscribe', channelId: walletAddress}))
// Unsubscribing from a channel called `something`
this.socket.send(JSON.stringify({action: 'unsubscribe', channelId: walletAddress}))
On subscribing to a wallet address channel, we recieve the following type of messages
Action | Trigger |
---|---|
order_placed | An order has been placed |
order_submitted | An order has been submitted and accepted by the system |
order_book_updated | Order book for a market is updated |
trade_created | Order is matched |
trade_updated | The DB is updated with the blockchain transaction information |
order_submitted_onchain | An order has been submitted to the blockchain |