Ana içeriğe geç

Gas Ücreti (Gerçek Zamanlı)

WebSocket üzerinden gerçek zamanlı gas ücreti güncellemeleri alın. Sunucu, bir cron işi aracılığıyla düzenli aralıklarla güncel ağ gas ücretini yayınlar. İstemciler broadcast:gas_fee kanalına abone olur ve güncellemeleri otomatik alır.

Bağlantı

1. Gerçek Zamanlı Sunucuya Bağlan

Geçerli bir JWT token ile Socket.IO bağlantısı kurun:

import { io } from "socket.io-client";

const socket = io("wss://realtime.example.com", {
auth: {
token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
},
});

2. Gas Ücreti Kanalına Abone Ol

Bağlandıktan sonra, kanal adı broadcast:gas_fee ile subscribe olayını gönderin:

socket.on("connect", () => {
socket.emit("subscribe", "broadcast:gas_fee");
});

3. Mesajları Dinle

Gas ücreti güncellemeleri message olayları olarak gelir. Gas ücreti mesajlarını tanımlamak için type alanını kontrol edin:

socket.on("message", (data) => {
if (data.type === "gas_fee") {
console.log("Gas Ücreti Güncellemesi:", data.payload);
// {
// chainId: 137,
// maxPriorityFee: 0.000000030,
// maxFee: 0.000000034,
// nativeCurrencySymbol: "POL"
// }
}
});

4. Abonelikten Çık (isteğe bağlı)

socket.emit("unsubscribe", "broadcast:gas_fee");

Tam Örnek

import { io } from "socket.io-client";

const REALTIME_URL = "wss://realtime.example.com";
const GAS_FEE_CHANNEL = "broadcast:gas_fee";

const socket = io(REALTIME_URL, {
auth: { token: "<jwt_tokenunuz>" },
});

socket.on("connect", () => {
console.log("Bağlandı:", socket.id);
socket.emit("subscribe", GAS_FEE_CHANNEL);
});

socket.on("message", (data) => {
if (data.type === "gas_fee") {
const { chainId, maxPriorityFee, maxFee, nativeCurrencySymbol } = data.payload;
console.log(`Gas Ücreti: ~${maxFee} ${nativeCurrencySymbol} (Zincir ${chainId})`);
}
});

socket.on("error", (err) => {
console.error("Socket hatası:", err);
});

socket.on("disconnect", () => {
console.log("Bağlantı kesildi");
});

Mesaj Formatı

broadcast:gas_fee kanalından alınan her mesaj aşağıdaki zarf yapısına sahiptir:

{
"type": "gas_fee",
"payload": {
"chainId": 137,
"maxPriorityFee": 0.000000030,
"maxFee": 0.000000034,
"nativeCurrencySymbol": "POL"
},
"timestamp": "2026-02-28T14:30:00Z"
}

Zarf Alanları

AlanTipAçıklama
typestringMesaj tipi tanımlayıcısı. Bu kanal için her zaman gas_fee
payloadobjectGas ücreti verisi
timestampstringMesajın yayınlandığı zamanın ISO 8601 damgası

Payload Alanları

AlanTipAçıklama
chainIdintegerAktif ağın zincir ID'si (örn. 1 = Ethereum, 137 = Polygon)
maxPriorityFeenumberGaz birimi başına maksimum öncelik ücreti (bahşiş), yerel para biriminde
maxFeenumberGaz birimi başına maksimum toplam ücret (temel ücret + öncelik ücreti + tampon), yerel para biriminde
nativeCurrencySymbolstringZincirin yerel para biriminin sembolü (örn. POL, ETH)

Kanal Referansı

KanalAçıklama
broadcast:gas_feeGenel kanal — kimliği doğrulanmış tüm kullanıcılar abone olabilir
bilgi

Yayın kanalları (broadcast: öneki ile) geneldir ve kimliği doğrulanmış tüm kullanıcılar tarafından kullanılabilir. Kullanıcıya özel kanallar, kanal adında kullanıcı ID'si gerektirir.

Notlar

  • Gas ücreti değerleri zincirin yerel para birimindedir (Gwei değil). Gwei'ye dönüştürmek için 1.000.000.000 ile çarpın.
  • Güncellemeler sunucu tarafındaki bir cron işi tarafından periyodik olarak gönderilir — istemcilerin poll yapması gerekmez.
  • Bağlantı geçerli bir JWT token gerektirir. Süresi dolmuş tokenlar Authentication error ile sonuçlanır.

Ortamlar

Test: https://test-socket.tokenizationtr.com