DEV Community

Morad anees
Morad anees

Posted on

Building a Low-Latency Whale Tracker: How I Solved the Data Bottleneck in My Telegram Crypto Bot


In the fast-paced world of cryptocurrency, data isn't just information—it's timing. A delay of even a few seconds can be the difference between a profitable trade and a missed opportunity. While building Tgcryptobot, I encountered a significant technical hurdle: high latency in real-time blockchain monitoring. In this post, I’ll share how I transitioned from standard HTTP polling to a high-performance WebSocket architecture to achieve sub-millisecond response times.
The Problem: The Bottleneck of HTTP Polling
Initially, I implemented a simple HTTP polling mechanism to track liquidity changes on Ethereum. My server would request data from the node every few seconds. However, this approach faced two critical flaws:

  1. Latency: The overhead of constant HTTP requests led to an average delay of 8–10 seconds.
  2. Rate Limiting: Frequent polling often hit node provider limits, causing downtime. The Solution: Shifting to WebSockets To fix this, I redesigned the infrastructure to use WebSockets. By establishing a persistent bidirectional connection with the blockchain node, my bot receives updates the moment a transaction is broadcasted to the mempool, rather than waiting to "ask" for them. Here is the core logic of the connection handler I implemented:

const WebSocket = require('ws');
const ws = new WebSocket('wss://mainnet.infura.io/ws/v3/YOUR_PROJECT_ID');

ws.on('open', () => {
  console.log('--- Blockchain Node Connected: Real-time stream active ---');
});

// Process incoming transaction streams
ws.on('message', (data) => {
  const tx = JSON.parse(data);

  // High-performance filtering logic
  if (isWhaleTransaction(tx.value)) {
    processAndAlert(tx);
  }
});

function isWhaleTransaction(value) {
  // Threshold for "whale" activity (e.g., > $50,000)
  return value > 50000;
}

Enter fullscreen mode Exit fullscreen mode

Intelligent Notification Buffering
One of the most common complaints about crypto bots is "notification fatigue." To combat this, I implemented an asynchronous Alert Buffer. Instead of sending an alert for every single transaction, the bot buffers events and sends a summary report, significantly improving the user experience during high-volatility periods.


let alertBuffer = [];

function processAndAlert(tx) {
  alertBuffer.push(tx);

  // Send a batch update to Telegram every 3 events
  if (alertBuffer.length >= 3) {
    sendToTelegram(formatSummary(alertBuffer));
    alertBuffer = []; // Clear the buffer
  }
}

Enter fullscreen mode Exit fullscreen mode

Impact and Results
After moving to this WebSocket-driven architecture, the round-trip time from transaction broadcast to Telegram notification dropped from ~10 seconds to less than 200 milliseconds. This provides an objective competitive advantage for traders using the bot.
Why Tgcryptobot?
The development of Tgcryptobot was driven by the need for performance-oriented tools. It isn't just another notification bot; it’s an engineered solution to data throughput challenges.
• For Developers: I’m constantly looking for ways to optimize these algorithms. If you have experience with Go or Rust concurrency models and want to discuss how to push these limits further, let's connect.
• For Traders: You can experience these real-time alerts yourself at tgcryptobot.com.
I’d love to hear how you handle high-frequency data streams in your own projects. Drop a comment below if you have any questions about the infrastructure or the implementation details!

Top comments (0)