Implementation

How-To Guides

How to Use FXMacroData SSE Streams for Real-Time Macro Data

A step-by-step guide to building a working SSE subscriber that listens for new FXMacroData release events in real time, filters for the currencies and indicators you care about, and pulls the full indicator payload from the REST API.

इसमें भी उपलब्ध है English
Share article X LinkedIn Email

इस गाइड के अंत तक आपके पास एक कार्यरत एसएसई ग्राहक होगा जो वास्तविक समय में नई एफएक्समैक्रोडाटा रिलीज़ घटनाओं के लिए सुनता है, मुद्राओं और संकेतकों के लिए फ़िल्टर करता है जिनकी आप परवाह करते हैं, और फिर रिलीज प्रकाशित होने के क्षण में REST एपीआई से पूर्ण संकेतक पेलोड खींचता है।

पूर्व शर्तें

  • यदि आप गैर-USD धाराओं चाहते हैं तो एक FXMacroData एपीआई कुंजी; केवल USD धाराएँ प्रमाणीकरण के बिना काम करती हैं
  • ब्राउज़र के लिए एक वातावरण EventSource उदाहरण के लिए, या पाइथन 3.9+ कार्यकर्ता उदाहरण के
  • requests पैकेज स्थापित है यदि आप पायथन उदाहरण का पालन करना चाहते हैं (pip install requests)
  • घोषणा के अंत बिंदुओं की बुनियादी समझ जैसे कि अमरीकी डालर मुद्रास्फीति दस्तावेज और यूरो नीतिगत दर डॉक्स

चरण 1 एसएसई धारा क्या प्रदान करती है, समझें

नया एसएसई एंडपॉइंट एक लंबे समय तक चलने वाला HTTP कनेक्शन खोलता है और हर बार जब FXMacroData एक ताजा आर्थिक रिलीज का सेवन करता है तो एक घटना को धक्का देता है। एंडपॉपइंट हैः

https://api.fxmacrodata.com/v1/stream/events
महत्वपूर्ण प्रत्यक्ष एपीआई डोमेन का प्रयोग करें: एसएसई के लिए एक प्रत्यक्ष कनेक्शन की आवश्यकता होती है। हमेशा उपयोग करें api.fxmacrodata.com (नहीं fxmacrodata.com/api/…), जो सीडीएन बफरिंग के बिना सीधे एपीआई सर्वर पर जाता है जो लाइव स्ट्रीम को तोड़ देगा।

आप दो वैकल्पिक क्वेरी पैरामीटर के साथ फ़ीड को संकुचित कर सकते हैंः

  • currencies अल्पविराम से अलग सूची जैसे usd,eur
  • indicators अल्पविराम से अलग सूची जैसे inflation,policy_rate

गैर-USD मुद्राओं के लिए, अपनी एपीआई कुंजी को क्वेरी पैरामीटर के रूप में पास करें. उदाहरण के लिए:

curl -N "https://api.fxmacrodata.com/v1/stream/events?currencies=eur,gbp&indicators=inflation,policy_rate&api_key=YOUR_API_KEY"

यदि आप फ़िल्टर के बिना और एक पेशेवर कुंजी के बिना कनेक्ट करते हैं, तो स्ट्रीम स्वचालित रूप से USD घटनाओं तक सीमित है। इससे एसएसई व्यापक कवरेज में तार से पहले एक मुफ्त अवधारणा प्रमाण के लिए भी उपयोगी हो जाता है।

महत्वपूर्ण व्यवहार

  • स्ट्रीम एक ट्रिगर है, पूरा डेटासेट नहीं। प्रत्येक एसएसई संदेश आपको बताता है कि एक रिलीज उतरा है; आप अभी भी पूर्ण रिकॉर्ड लेने के लिए मिलान घोषणा अंत बिंदु को कॉल करते हैं।
  • सर्वर दिल की धड़कन भेजता है. निष्क्रिय कनेक्शन एक : heartbeat लगभग हर 15 सेकंड में टिप्पणी करें ताकि प्रॉक्सी स्ट्रीम को बंद न करें।
  • प्रत्येक घटना में एक पहचान पत्र शामिल है। कि आईडी क्या शक्ति के माध्यम से पुनः कनेक्ट पर पुनः प्ले है Last-Event-ID.

चरण 2 क्लाइंट लिखने से पहले इवेंट प्रारूप को जानें

FXMacroData मानक W3C इवेंटसोर्स फ्रेम उत्सर्जित करता है. एक विशिष्ट संदेश इस तरह दिखता हैः

id: usd_inflation_1772109000
event: announcement
data: {"event_id": "usd_inflation_1772109000", "currency": "usd", "indicator": "inflation", "records_written": 1, "timestamp": 1772109002}

पेलोड क्षेत्र जानबूझकर छोटे और परिचालन में हैं:

  • event_id फॉर्म में निर्धारक पहचानकर्ता {currency}_{indicator}_{timestamp}
  • currency लघु मुद्रा कोड जैसे usd या eur
  • indicator उदाहरण के लिए FXMacroData सूचक स्लग inflation, policy_rate, या non_farm_payrolls
  • records_written सेवन के दौरान सहेजे गए नए रिकॉर्ड की संख्या
  • timestamp स्ट्रीम पर घटना प्रकाशित होने के लिए यूनिक्स टाइमस्टैम्प

क्योंकि एसएसई संदेश में पूर्ण समय श्रृंखला नहीं होती है, सामान्य पैटर्न हैः घटना के लिए सुनें, फिर एपीआई डेटा डॉक्स नए उपलब्ध रिलीज डेटा को पुनः प्राप्त करने के लिए।


चरण 3 EventSource के साथ ब्राउज़र में स्ट्रीम खोलें

यदि आप एक डैशबोर्ड, ब्राउज़र आधारित अधिसूचना, या आंतरिक निगरानी पृष्ठ बना रहे हैं, तो मूल EventSource स्ट्रीम का उपभोग करने का सबसे सरल तरीका है. auth के लिए क्वेरी स्ट्रिंग का उपयोग करें ताकि कनेक्शन कस्टम हेडर के बिना ब्राउज़र में काम करे.

const apiKey = "YOUR_API_KEY";

const streamUrl = new URL("https://api.fxmacrodata.com/v1/stream/events");
streamUrl.searchParams.set("currencies", "eur,gbp");
streamUrl.searchParams.set("indicators", "inflation,policy_rate");
streamUrl.searchParams.set("api_key", apiKey);

const source = new EventSource(streamUrl);

source.addEventListener("announcement", async (event) => {
  const payload = JSON.parse(event.data);
  console.log("Release received", payload);

  const dataUrl = new URL(
    `https://api.fxmacrodata.com/v1/announcements/${payload.currency}/${payload.indicator}`
  );
  dataUrl.searchParams.set("api_key", apiKey);

  const response = await fetch(dataUrl);
  const records = await response.json();
  const latest = records[records.length - 1];

  console.log("Latest record", latest);
});

source.onerror = (error) => {
  console.error("SSE connection problem", error);
};

मूल निवासी EventSource स्वचालित रूप से पुनः कनेक्ट जब कनेक्शन गिर जाता है. क्योंकि FXMacroData एक भेजता है id: प्रत्येक संदेश के साथ फ़ील्ड, ब्राउज़र स्वचालित रूप से पुनः कनेक्ट के दौरान अंतिम प्राप्त घटना आईडी शामिल करेगा, जो सर्वर को बफर की गई घटनाओं को फिर से खेलने देता है जिन्हें आपने याद किया है।

यह पैटर्न क्यों अच्छा काम करता है

आपका पृष्ठ तब तक निष्क्रिय रहता है जब तक कि रिलीज़ वास्तव में नहीं आती है. कोई पांच मिनट का पोलर नहीं है, कोई बेकार अनुरोध नहीं है और प्रकाशन और आपके ताज़ा करने के तर्क के बीच कोई समय अंतराल नहीं है. यह विशेष रूप से उच्च संवेदनशीलता रिलीज के लिए उपयोगी है जैसे कि अमरीकी डालर में गैर-कृषि वेतन या यूरो मुद्रास्फीति. .


चरण 4 प्रत्येक अलर्ट के बाद पूर्ण सूचक पेलोड प्राप्त करें

सबसे महत्वपूर्ण डिजाइन बिंदु यह है कि एसएसई आपको बताता है कब लाने के लिए, नहीं सब कुछ एक घटना के आने के बाद, मिलान घोषणा अंत बिंदु कॉल और नवीनतम रिकॉर्ड का निरीक्षण करें.

async function fetchLatestRelease(currency, indicator, apiKey) {
  const url = new URL(`https://api.fxmacrodata.com/v1/announcements/${currency}/${indicator}`);

  if (currency !== "usd") {
    url.searchParams.set("api_key", apiKey);
  }

  const response = await fetch(url);
  if (!response.ok) {
    throw new Error(`Announcement fetch failed: ${response.status}`);
  }

  const records = await response.json();
  return records[records.length - 1] ?? null;
}

source.addEventListener("announcement", async (event) => {
  const payload = JSON.parse(event.data);
  const latest = await fetchLatestRelease(payload.currency, payload.indicator, apiKey);

  if (latest) {
    console.log(`New ${payload.currency.toUpperCase()} ${payload.indicator}`, latest);
  }
});

यह आरईएसटी एंडपॉइंट्स की पूर्ण निष्ठा को बनाए रखते हुए स्ट्रीम को हल्का रखता है। इसका मतलब यह भी है कि एक ही डाउनस्ट्रीम पार्सिंग कोड का पुनः उपयोग किया जा सकता है चाहे आपका ट्रिगर एसएसई, एक शेड्यूलर या मैनुअल एपीआई कॉल से आता हो।


चरण 5 पुनः कनेक्ट पर स्पष्ट रीप्ले के साथ एक पायथन कार्यकर्ता का निर्माण करें

सर्वर-साइड डेमॉन या बॉट के लिए, यह अक्सर पुनः कनेक्ट लॉजिक को सीधे नियंत्रित करने और Last-Event-ID नीचे दिया गया उदाहरण घोषणा घटनाओं के लिए सुनता है, अंतिम देखी आईडी संग्रहीत करता है, और एक डिस्कनेक्ट के बाद याद बफर की घटनाओं को फिर से चलाता है.

import json
import time
import requests

API_KEY = "YOUR_API_KEY"
STREAM_URL = (
    "https://api.fxmacrodata.com/v1/stream/events"
    "?currencies=eur,gbp&indicators=inflation,policy_rate&api_key=" + API_KEY
)


def fetch_latest_release(currency: str, indicator: str) -> dict | None:
    url = f"https://api.fxmacrodata.com/v1/announcements/{currency}/{indicator}"
    params = {"api_key": API_KEY} if currency != "usd" else {}
    response = requests.get(url, params=params, timeout=20)
    response.raise_for_status()
    records = response.json()
    return records[-1] if records else None


def consume_stream() -> None:
    last_event_id = None

    while True:
        headers = {"Accept": "text/event-stream"}
        if last_event_id:
            headers["Last-Event-ID"] = last_event_id

        try:
            with requests.get(STREAM_URL, headers=headers, stream=True, timeout=90) as response:
                response.raise_for_status()

                event = {}
                for raw_line in response.iter_lines(decode_unicode=True):
                    if raw_line is None:
                        continue

                    line = raw_line.strip()

                    if not line:
                        if event.get("event") == "announcement" and event.get("data"):
                            payload = json.loads(event["data"])
                            last_event_id = event.get("id") or payload["event_id"]

                            latest = fetch_latest_release(
                                payload["currency"],
                                payload["indicator"],
                            )
                            print("Announcement event", payload)
                            print("Latest record", latest)

                        event = {}
                        continue

                    if line.startswith(":"):
                        continue

                    field, _, value = line.partition(":")
                    event[field] = value.lstrip()

        except requests.RequestException as exc:
            print(f"Stream disconnected: {exc}. Reconnecting in 3 seconds...")
            time.sleep(3)


if __name__ == "__main__":
    consume_stream()

यह सही पैटर्न है जब आपको अस्थायी आउटेज के माध्यम से निर्धारक पुनःप्ले की आवश्यकता होती है. यदि कोई घटना प्रकाशित होने के बाद कनेक्शन गिर जाता है लेकिन आपके कार्यकर्ता ने इसे संसाधित करने से पहले, अगली अनुरोध में अंतिम प्राप्त आईडी शामिल है और सर्वर बफर की गई घटनाओं को फिर से चलाता है जो इसके बाद आया था.


चरण 6 एक घटना के आने पर आप क्या करना चाहते हैं, यह तय करें

एक बार धारा में तारों में है, असली डिजाइन विकल्प क्या नीचे होता है। आम पैटर्न में शामिल हैंः

डैशबोर्ड कार्ड ताज़ा करें

जब कोई मेल खाता घटना आती है, तो नवीनतम रिकॉर्ड प्राप्त करें और पूरे पृष्ठ को पुनः लोड करने के बजाय एक पैनल को फिर से आकर्षित करें.

ट्रेडिंग या अलर्ट कार्यप्रवाह को ट्रिगर करें

आप अपनी सीमाओं के साथ नवीनतम रिलीज की तुलना करने के बाद स्लैक, ईमेल, या व्यापार कतार में घटना को धक्का दें.

एक कैश गर्म करें

एसएसई को अमान्य करने के ट्रिगर के रूप में प्रयोग करें, फिर नए डेटा की पुष्टि होने पर ही प्रभावित सूचक कैश को ताज़ा करें।

रिलीज कैलेंडर के साथ संयोजन

प्रयोग करना रिलीज कैलेंडर गाइड आगे क्या निर्धारित है यह जानने के लिए, फिर SSE को लाइव पुष्टिकरण परत के रूप में खुला रखें।


चरण 7 कुछ किनारे के मामले पहले से ही संभालें

एसएसई सरल है, लेकिन उत्पादन उपयोग अभी भी कुछ नियमों से लाभान्वित होता हैः

  • एक घटना का एक मूल्य के बराबर न मानें। records_written एक से अधिक हो सकता है यदि एक रिलीज में एक से ज्यादा रिकॉर्ड अपडेट किए जाते हैं.
  • फिर से कनेक्ट करने की उम्मीद है। ब्राउज़र, प्रॉक्सी और मोबाइल नेटवर्क कभी-कभी लंबे समय तक चलने वाले कनेक्शन को तोड़ देंगे; रिप्ले समर्थन ठीक इसी कारण से मौजूद है।
  • जहाँ तक संभव हो, धारा को संकीर्ण रखें। फ़िल्टर द्वारा currencies और indicators शोर को कम करता है और अनावश्यक डाउनस्ट्रीम फ़ॉन्ट्स से बचता है।
  • REST को सत्य का स्रोत छोड़ दें। स्ट्रीम आपको बताता है कि एक रिलीज़ हुई; कैनोनिकल रिकॉर्ड अभी भी मिलान घोषणा अंत बिंदु से आता है.
व्यावहारिक नियम: यदि आपके एप्लिकेशन ने एक लंबी आउटेज विंडो को याद किया और पुनः प्ले बफर अब पर्याप्त नहीं है, तो आपके द्वारा ट्रैक किए जाने वाले संकेतकों के लिए सामान्य REST फ़ेच पर वापस जाएं। SSE को आपके सिस्टम को तेज़ बनाना चाहिए, अधिक भंगुर नहीं।

आपने जो बनाया

अब आपके पास FXMacroData वास्तविक समय कार्यप्रवाहों के लिए मुख्य घटना-संचालित पैटर्न हैः सदस्यता लें https://api.fxmacrodata.com/v1/stream/events, फ़िल्टर करें और उन मुद्राओं और संकेतकों पर प्रतिक्रिया करें जो मायने रखते हैं। announcement घटनाओं के रूप में वे आते हैं, और पूर्ण रिलीज डेटा केवल जब स्ट्रीम आपको बताता है कुछ नया उतरा है लाने के लिए।

एक स्वाभाविक अगला कदम एसएसई को रिलीज कैलेंडर अनुसूची गाइड तो आप जानते हैं कि आगे क्या होने वाला है और अभी भी एक तत्काल संकेत प्राप्त करते हैं जब प्रकाशन वास्तव में होता है।


FXMacroData टीम

Blogroll

AI Answer-Ready

Key Facts

Page
How To Use FXmacrodata Sse Streams
Section
Articles
Canonical URL
https://fxmacrodata.com/articles/how-to-use-fxmacrodata-sse-streams
Source
FXMacroData editorial and official publisher references
Last Updated
2026-06-15 11:01 UTC

Provenance And Trust

Cite the canonical URL and source field above. Where available, this page maps to official publisher releases and timestamped updates.

Quick Q&A

What is this page about? This page explains How To Use FXmacrodata Sse Streams with directly usable context for trading, research, and API workflows.

What source should be cited? Use the canonical URL and the listed source field; cite official publisher references when available.

How fresh is this content? The last updated value above reflects the page metadata or latest available data timestamp.

Can this be used in AI assistants? Yes. This section is intentionally structured for retrieval and citation in chat assistants.

Prompt Packs

Use these in ChatGPT, Claude, Gemini, Mistral, Perplexity, or Grok for consistent source-aware outputs.

Share page X LinkedIn Email