Diskuze: KOMUNIKACE S API VEŘEJNÉ BURZY
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
V prípade tohoto API od Poloniex nepotrebuješ robiť takú zhovadilosť ako polling so setInterval. API má podporu push notifikácií, čiže len nadviažeš obojsmerné spojenie s API a len čo sa udeje zmena v kurze, potlačia Ti ju na Tvoj server, prípadne stránku.
V princípe sa jedná na pozadí o Web Sockets - formu komunikácie medzi stránkami v reálnom čase. Nemusíš sa proste na svoje stránke pomocou intervalu neustále dotazovať ich API aký je aktuálny kurz. Ale tvoja stránka sa zaregistruje, že chce byť informovaná o zmene kurzu napríklad zlata. A potom už nerobí nič, iba čaká na novú správu od API, že sa zmenil kurz. To je pointa - stránka čaká a nie, že sa v intervale zbytočne dokola dopytuje na aktuálny kurz. Takto sa to proste teraz robieva, používajú sa (rôzne formy) push notifikácie takmer v reálnom čase zo servera na klienta, miesto takzvaného pollingu - pýtania si dát v slučke z klienta od serveru. A presne toto aj API od Poloniexu dokáže, Tvoja stránka môže byť o zmene kurzu informovaná okamžite API serverom, miesto toho, aby si aktuálny kurz dostal až pri najbližšej iterácii slučky na klientovi.
Přikládám zdrojový kód jednoduché stránky. Stačí si tohle uložit jako index.html a spustit. Do konzole Ti to bude vypisovat každou změnu, která se provede. Není k tomu potřeba žádný NodeJS server. Je potřeba k tomuto skriptu stáhnout knihovnu autobahn, která je dostupná v minifikované verzi na této adrese.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test</title>
<script src="./autobahn.min.js"></script>
</head>
<body>
<script>
var wsuri = "wss://api.poloniex.com";
var connection = new autobahn.Connection({
url: wsuri,
realm: "realm1"
});
connection.onopen = function (session) {
function marketEvent (args,kwargs) {
console.log(args);
}
function tickerEvent (args,kwargs) {
console.log(args);
}
function trollboxEvent (args,kwargs) {
console.log(args);
}
session.subscribe('BTC_XMR', marketEvent);
session.subscribe('ticker', tickerEvent);
session.subscribe('trollbox', trollboxEvent);
console.log("Websocket is open");
}
connection.onclose = function () {
console.log("Websocket connection closed");
}
connection.open();
</script>
</body>
</html>
Doufám, že zbytek už zvládneš sám.
Btw. kód jsem okopíroval z jejich API přikladu právě pro NodeJS server.
Môžeš použiť ako príklad kód od Petra, alebo tu máš zjednodušený JSFIDDLE príklad
PS: A tu máš ešte pre istotu len o málo zložitejší príklad na sledovanie viacerých kurzov naraz.
Zobrazeno 9 zpráv z 9.