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ı
| Alan | Tip | Açıklama |
|---|---|---|
type | string | Mesaj tipi tanımlayıcısı. Bu kanal için her zaman gas_fee |
payload | object | Gas ücreti verisi |
timestamp | string | Mesajın yayınlandığı zamanın ISO 8601 damgası |
Payload Alanları
| Alan | Tip | Açıklama |
|---|---|---|
chainId | integer | Aktif ağın zincir ID'si (örn. 1 = Ethereum, 137 = Polygon) |
maxPriorityFee | number | Gaz birimi başına maksimum öncelik ücreti (bahşiş), yerel para biriminde |
maxFee | number | Gaz birimi başına maksimum toplam ücret (temel ücret + öncelik ücreti + tampon), yerel para biriminde |
nativeCurrencySymbol | string | Zincirin yerel para biriminin sembolü (örn. POL, ETH) |
Kanal Referansı
| Kanal | Açıklama |
|---|---|
broadcast:gas_fee | Genel kanal — kimliği doğrulanmış tüm kullanıcılar abone olabilir |
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.000ile ç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 errorile sonuçlanır.
Ortamlar
Test:
https://test-socket.tokenizationtr.com