FXMacroData offre désormais un point de fin de flux d'événements envoyés par serveur (SSE) en temps réel. Connectez-vous une fois et votre application reçoit une notification push en direct au moment où toute version économique est ingérée couvrant toutes les 18 devises prises en charge, y compris Réserve fédérale décisions politiques, La BCE Les taux de change sont les plus élevés au monde.
Quoi de neuf ?
- En direct sur le point de fin SSE
api.fxmacrodata.com/v1/stream/events - Plan gratuit: événements d'annonce en USD, aucune clé API requise
- Plan professionnel: toutes les 18 monnaies, filtrable par devise et indicateur
- Battage cardiaque automatique toutes les ~ 30 secondes pour maintenir les connexions via des proxies
- Reprise de l' appui via
Last-Event-IDen-tête reprendre les événements manqués après une déconnexion
Le point final
Le flux SSE est disponible à l'adresse URL suivante. Ceci est une connexion directe au serveur FXMacroData API Ne pas utiliser le fxmacrodata.com/api/...
le parcours pour l'ESS, car cette route passe à travers la couche CDN qui tamponne la réponse et brise le flux en direct.
https://api.fxmacrodata.com/v1/stream/events
Paramètres de requête optionnels vous permettent de réduire le flux:
currenciesliste séparée par des virgules:usd,eur,gbpindicatorsliste séparée par des virgules:inflation,policy_rateapi_keyclé API professionnelle requise pour les devises autres que l'USD
curl -N "https://api.fxmacrodata.com/v1/stream/events?currencies=usd&indicators=inflation,policy_rate"
Format de l'événement
Chaque version économique publiée produit un cadre EventSource standard du W3C:
id: usd_inflation_1772109000
event: announcement
data: {"event_id": "usd_inflation_1772109000", "currency": "usd", "indicator": "inflation", "records_written": 1, "timestamp": 1772109002}
Le message SSE est un déclencheur opérationnel, et non la charge utile complète des données. Les données de l'API pour récupérer la série temporelle complète, y compris la nouvelle valeur.
Exemple de navigateur
Dans un navigateur, natif EventSource L'exemple suivant s'abonne à Liste des salariés non agricoles en USD
Je suis désolé . Inflation en dollars américains en utilisant le niveau non authentifié gratuit:
const streamUrl = new URL("https://api.fxmacrodata.com/v1/stream/events");
streamUrl.searchParams.set("currencies", "usd");
streamUrl.searchParams.set("indicators", "non_farm_payrolls,inflation");
const source = new EventSource(streamUrl);
source.addEventListener("announcement", async (event) => {
const payload = JSON.parse(event.data);
console.log("Release received:", payload.currency, payload.indicator);
// Fetch the full record now that we know new data is available
const resp = await fetch(
`https://api.fxmacrodata.com/v1/announcements/${payload.currency}/${payload.indicator}`
);
const records = await resp.json();
console.log("Latest record:", records[records.length - 1]);
});
source.onerror = (err) => console.error("SSE error", err);
Exemple Python
Pour un travailleur du côté serveur, utilisez requests En mode streaming.
Last-Event-ID sur reconnecter pour refaire tout événement manqué:
import json, time, requests
API_KEY = "YOUR_API_KEY"
STREAM_URL = (
"https://api.fxmacrodata.com/v1/stream/events"
"?currencies=usd,eur&indicators=inflation,policy_rate&api_key=" + API_KEY
)
def consume():
last_id = None
while True:
headers = {"Accept": "text/event-stream"}
if last_id:
headers["Last-Event-ID"] = last_id
try:
with requests.get(STREAM_URL, headers=headers, stream=True, timeout=90) as r:
r.raise_for_status()
event = {}
for line in r.iter_lines(decode_unicode=True):
if not line:
if event.get("event") == "announcement" and event.get("data"):
payload = json.loads(event["data"])
last_id = event.get("id") or payload["event_id"]
print("New release:", payload)
event = {}
continue
if not line.startswith(":"):
field, _, value = line.partition(":")
event[field] = value.lstrip()
except requests.RequestException as e:
print(f"Disconnected: {e}. Retrying...")
time.sleep(3)
consume()
Disponibilité du plan
Plan gratuit
Uniquement pour les événements d'annonce USD. Aucune clé API requise. Connectez-vous directement à api.fxmacrodata.com/v1/stream/events sans aucun paramètre d'authentification.
Plan professionnel
Filtrez par toute combinaison de devises et d'indicateurs. ?api_key=YOUR_KEY dans la chaîne de requêtes.
Ce qu'il faut construire ensuite
Le flux SSE fonctionne mieux comme une couche de déclenchement au-dessus de votre flux de travail REST existant.
- Mise à jour en temps réel de la carte du tableau de bord mettre à jour un panneau dès que de nouvelles données arrivent au lieu de faire un sondage toutes les N minutes.
- Alertes de négociation comparez la dernière version à vos seuils et lancez une notification Slack ou webhook immédiatement.
- Invalidation du cache utiliser l'événement SSE comme signal pour récupérer et stocker le dossier de l'indicateur mis à jour.
- Combiné avec le calendrier de sortie savoir ce qui est prévu ensuite et utiliser SSE comme confirmation en direct lorsqu'il publie réellement.
Pour une présentation détaillée de la mise en œuvre, voir Guide de conduite en streaming de la SSEJe suis désolé .
L'équipe FXMacroData