Skip to content

Instantly share code, notes, and snippets.

@icehongssii
Created August 16, 2018 07:21
Show Gist options
  • Save icehongssii/a42b87af530bed8974d9bf40df67f743 to your computer and use it in GitHub Desktop.
Save icehongssii/a42b87af530bed8974d9bf40df67f743 to your computer and use it in GitHub Desktop.
const app = require('express')();
const server = require('http').Server(app);
const request = require('request');
const io = require('socket.io-client');
server.listen(3005);
app.get('/', function (req, res, err) {
res.sendfile('/index.html');
if (err) {
console.log(err)
}
});
function getPairs(){
return new Promise((resolve, reject)=>{
request('https://api.bitflyer.jp/v1/markets', function(error, res, body){
if (res.statusCode == 200 && !error){
var result = JSON.parse(body)
var pairs = [];
var i;
for(i=0; i<result.length; i++){
if (Object.keys(result[i]).length ==1 && !Object.values(result[i])[0].startsWith('FX')){
pairs.push("lightning_ticker_"+Object.values(result[i])[0])
}
}
}
resolve(pairs)
});
});
}
async function queryMaker(){
var pairs = await getPairs()
const socket = io("https://io.lightstream.bitflyer.com", { transports: ["websocket"] });
var i;
socket.on("connect", () => {
for(i=0; i<pairs.length; i++){
console.log(pairs[i]);
socket.emit("subscribe", pairs[i]);
}
});
for(i=0; i<pairs.length; i++){
socket.on(pairs[i], message => {
var result = JSON.parse(JSON.stringify(message));
var pair = result.product_code.replace("_","");
var price = result.ltp;
console.log( { pair, price });
socket.emit('price_data', { pair, price});
});
}
}
queryMaker()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment