Spectrum API running on Telos Mainnet

in #spectrum5 years ago

spectrum.jpeg

EOS Tribe launched a beta version of it's web-socket streaming Spectrum API on Telos Mainnet (https://www.telosfoundation.io/).

Telos Mainnet Spectrum API web-socket endpoint: wss://api.telos.eostribe.io

This version currently supports subscriptions for get_actions, get_transaction and get_blocks streams.

Here is the sample subscription message for get_actions endpoint:

{
  "apikey":"test-api-key",
  "event":"subscribe",
  "type":"get_actions",
  "data":  {
              "account":"eostribeprod",
              “actions":[“transfer”,”buyram”]
   }
}

Fields description for get_actions:

  • event - type of events, there are two variants: “subscribe” and “unsubscribe”. Required [String].
  • type - type of endpoint. Required [String].
  • data - Contents of this object depends on type argument. Required for get_actions.
  • account - name of account. Required [String].
  • actions - List of actions name. [Object]. If actions are not specified - all actions will be matched.

Endpoint get_blocks - subscribe on new block events:

Request message format for get_blocks endpoint:

{
  "apikey":"test-api-key",
  "event":"subscribe",
  "type":"get_blocks"
}

Fields description:

  • apikey - key for access and accounting, not using on testnet.[String]
  • event - type of event, there are two variants “subscribe” and “unsubscribe”. To subscribe necessary using "subscribe" * value - this field is mandatory. [String].
  • type - type of endpoint. Required [String].

Below is the sample subscription message for get_transaction endpoint:

{
  "apikey":"test-api-key",
  "event":"subscribe",
  "type":"get_transaction",
  "data": {"account":"eosio"}
}

Fields description for get_transaction:

  • apikey - key for access and accounting, not using on testnet.[String]
  • event - type of event, there are two variants “subscribe” and “unsubscribe”. To subscribe necessary using "subscribe" value . This field is mandatory. [String].
  • type - type of endpoint. Required [String].
  • data - Contents of this object depends on type argument. Required for get_transaction.
  • account - name of account. Required [String].

Sample JS web-socket client to subscribe for events:

<html>
<head><title>Spectrum Web Sockets</title>
<script>
let socket = new WebSocket("wss://api.telos.eostribe.io/streaming");

# pick one of declarations:
# 1. get_actions:
var messageBody = {
   "apikey":"test-api-key",
   "event":"subscribe",
   "type":"get_actions",
   "data": {"account":"eosio"}
};
#2. get_blocks:
var messageBody = {
   "apikey":"test-api-key",
   "event":"subscribe",
   "type":"get_blocks"
};
#3. get_transaction:
var messageBody ={
    "apikey":"test-api-key",
    "event":"subscribe",
    "type":"get_transaction",
    "data": {"account":"eosio"}
};

socket.onopen = function(e) {
  console.log("[open] Connection established");
  console.log("Sending to server: "+JSON.stringify(messageBody));
  socket.send(JSON.stringify(messageBody));
};

socket.onmessage = function(event) {
  html_log("[message] Data received from server: "+event.data);
};

socket.onclose = function(event) {
  if (event.wasClean) {
    html_log("[close] Connection closed cleanly, code=${event.code} reason=${event.reason}");
  } else {
    html_log("[close] Connection died");
  }
};

socket.onerror = function(error) {
  html_log("[error] ${error.message}");
};

function html_log(data) {
  var divLog = document.getElementById("log");
  divLog.innerHTML += "<p>"+data+"</p>";
}

</script>
</head>
<body>
<h2>Spectrum Web Sockets Test: Get Actions</h2>
<div id="log"></div>
</body></html>

Feel free to give it a try and provide your feedback at out Telegram channel: https://t.me/EOSTribe

Original post describing Spectrum API architecture: https://steemit.com/eosio/@eostribe/introducing-spectrum-streaming-api-for-eosio

EOS Tribe is committed to continue work on creating innovative solutions for EOSIO.

Sort:  

Wow looks awesome you guys, looking forward to trying this out. Generally we found that with more traditional methods we got problems processing data for accounts having more than 2 million transactions like eosio.bpay or eosio.trail so this will no doubt breeze through those, will let you know!
Cheers
Rog

Yeah, needed this. Nice job.

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.030
BTC 56587.45
ETH 2991.05
USDT 1.00
SBD 2.15