私はリップルで交換をしようとしていますが、this data APIとその動作が見つかりました。しかし、何らかの理由でリップルwebsocketツールを使いたいと思っています。このデータAPIに相当するwebsocketはありますか?リップルはリップルデータと同等のwebsocketを交換しますapiv2
答えて
ソケットで "tx_history"コマンドを使用すると同じですが、jsonの結果が特定のデータ結果と等しくないことを伝えて申し訳ありません。
リップルデータapiv2がajaxによって再生されています。
} else if (resp.rows.length) { resp.rows[0] = { base_currency: resp.rows[0].base_currency, base_issuer: resp.rows[0].base_issuer, base_amount: resp.rows[0].base_amount, counter_amount: resp.rows[0].counter_amount, counter_currency: resp.rows[0].counter_currency, counter_issuer: resp.rows[0].counter_issuer, rate: resp.rows[0].rate, executed_time: resp.rows[0].executed_time, ledger_index: resp.rows[0].ledger_index, buyer: resp.rows[0].buyer, seller: resp.rows[0].seller, taker: resp.rows[0].taker, provider: resp.rows[0].provider, autobridged_currency: resp.rows[0].autobridged_currency, autobridged_issuer: resp.rows[0].autobridged_issuer, offer_sequence: resp.rows[0].offer_sequence, tx_type: resp.rows[0].tx_type, tx_index: resp.rows[0].tx_index, node_index: resp.rows[0].node_index, tx_hash: resp.rows[0].tx_hash }; } res.csv(resp.rows, filename); } else { res.json({ result: 'success', count: resp.rows.length, marker: resp.marker, exchanges: resp.rows }); } }
、それは、GET URLによってのみアクセスすることができる:交換のためリップル結果JSONフォーマッタを参照
経路:「/ V2 /交換/ {ベース} /そこserver.jsに結合されている:{カウンタ}」
:
app.get( '/ v2/exchanges /:base /:counter'、routes.getExchanges);
と最後のヒントこれはHBaseのを使用してデータベースクエリです:
HbaseClient.getExchanges =機能(オプション、コールバック){
VARベース= options.base.currency + '|' +(options.base.issuer || ''); var counter = options.counter.currency + '|' +(options.counter.issuer || ''); varテーブル。 var keyBase; var startRow; var endRow;var降順;
var columns;
if(counter.toLowerCase()> base.toLowerCase()){ keyBase = base + '|' +カウンター;
} else { keyBase = counter + '|' +ベース; options.invert = true; }
if(!options.interval){ table = 'exchanges'; 降順= options.descending?正誤; options.unreduced = true;他
//only need certain columns if (options.reduce) { columns = [ 'd:base_amount', 'd:counter_amount', 'd:rate', 'f:executed_time', 'f:buyer', 'f:seller', 'f:taker' ]; }
}場合(exchangeIntervals.indexOf(options.interval)== -1!){ keyBase = options.interval + '|' + keyBase; 降順= options.descending?正誤; table = 'agg_exchanges';
} else { コールバック( '無効な間隔:' + options.interval); リターン; }
startRow = keyBase + '|' + options.start.hbaseFormatStartRow();
endRow = keyBase + '|' + options.end。hbaseFormatStopRow();if(options.autobridged){ options.filterstring = "DependentColumnFilter( 'f'、 'autobridged_currency')"; if(columns){ columns.push( 'f:autobridged_currency'); }}
this.getScanWithMarker(この、{ テーブル:テーブル、 startRow属性:startRow属性、 stopRow:とendRow、 マーカー:options.marker、 限界:options.limit、 下降:下降、 列:カラム、 filterString:options.filterstring}、関数(ERR、RESP){
if (!resp) { resp = {rows: []}; } if (!resp.rows) { resp.rows = []; } if (options.reduce && options.unreduced) { if (descending) { resp.rows.reverse(); } resp.reduced = reduce(resp.rows); } else if (table === 'exchanges') { resp.rows = formatExchanges(resp.rows); } else { resp.rows = formatAggregates(resp.rows); } callback(err, resp); });
/** * formatExchanges */
function formatExchanges(rows){ rows.forEach(function(row){ var key = row.rowkey.split( '|');
delete row.base_issuer; delete row.base_currency; delete row.counter_issuer; delete row.counter_currency; row.base_amount = parseFloat(row.base_amount); row.counter_amount = parseFloat(row.counter_amount); row.rate = parseFloat(row.rate); row.offer_sequence = Number(row.offer_sequence || 0); row.ledger_index = Number(row.ledger_index); row.tx_index = Number(key[6]); row.node_index = Number(key[7]); row.time = utils.unformatTime(key[4]).unix(); }); if (options.invert) { rows = invertPair(rows); } return rows; }
/** * formatAggregates */
関数formatAggregates(行){ rows.forEach(関数(行){ VARキー= row.rowkey.split( '| 「); row.base_volume = parseFloatは(row.base_volume)、 row.counter_volume = parseFloatは(row.counter_volume)、 row.buy_volume = parseFloatは(row.buy_volume)、 row.count =番号(row.count) ; ro w.open = parseFloat(row.open); row.high = parseFloat(row.high); row.low = parseFloat(row.low); row.close = parseFloat(row.close); row.vwap = parseFloat(row.vwap); row.close_time =数値(row.close_time); row.open_time = Number(row.open_time); });
if (options.invert) { rows = invertPair(rows); } return rows; }
/** *ベース/カウンタキーが反転している場合、我々は交換する必要がある*結果の値の一部*/
関数invertPair(行){ VARスワップ; var i;
if (options.unreduced) { for (i=0; i<rows.length; i++) { rows[i].rate = 1/rows[i].rate; //swap base and counter vol swap = rows[i].base_amount; rows[i].base_amount = rows[i].counter_amount; rows[i].counter_amount = swap; //swap buyer and seller swap = rows[i].buyer; rows[i].buyer = rows[i].seller; rows[i].seller = swap; } } else { for (i=0; i<rows.length; i++) { //swap base and counter vol swap = rows[i].base_volume; rows[i].base_volume = rows[i].counter_volume; rows[i].counter_volume = swap; //swap high and low swap = 1/rows[i].high; rows[i].high = 1/rows[i].low; rows[i].low = swap; //invert open, close, vwap rows[i].open = 1/rows[i].open; rows[i].close = 1/rows[i].close; rows[i].vwap = 1/rows[i].vwap; //invert buy_volume rows[i].buy_volume /= rows[i].vwap; } } return rows; }
/** *すべての行を減らす*減らす*/
関数(行){
var buyVolume = 0; var reduced = { open: 0, high: 0, low: Infinity, close: 0, base_volume: 0, counter_volume: 0, buy_volume: 0, count: 0, open_time: 0, close_time: 0 }; rows = formatExchanges(rows);
// filter out small XRP amounts
行=行を減らします。フィルタ(機能(行){ if(options.base.currency === 'XRP' & &行。base_amount < 0.0005){ return false; } else if(options.counter.currency === 'XRP' & & row.counter_amount < 0.0005){ falseを返します。 } else { がtrueを返します。 } });
if (rows.length) { reduced.open_time = moment.unix(rows[0].time).utc().format(); reduced.close_time = moment.unix(rows[rows.length-1].time).utc().format(); reduced.open = rows[0].rate; reduced.close = rows[rows.length -1].rate; reduced.count = rows.length; } else { reduced.low = 0; return reduced; } rows.forEach(function(row) { reduced.base_volume += row.base_amount; reduced.counter_volume += row.counter_amount; if (row.rate < reduced.low) reduced.low = row.rate; if (row.rate > reduced.high) reduced.high = row.rate; if (row.buyer === row.taker) { reduced.buy_volume += row.base_amount; } }); reduced.vwap = reduced.counter_volume/reduced.base_volume; return reduced; } };
たぶん、あなたは1.1 httpプロトコル(WS)にごRPC
コールのアップグレードを行うカスタム用WebSocketを行う必要があります。 nodejs
で
することができます単に
// for http
var http = require('http');
// for websocket
var ws = require("nodejs-websocket")
var options = {
host: 'URL-RPC-HERE',
port: '80',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': post_data.length
}
};
var req = http.request(options, function(res) {
// after getting the response wich is the <res>
// we can upgrade it to ws
upToWebsocket(res);
});
//Upgrade to websocket
var upToWebsocket = function(json) {
var server = ws.createServer(function (conn) {
conn.on("json", function (str) {
conn.sendText(str.toUpperCase()+"!!!")
})
conn.on("close", function (code, reason) {
console.log("Connection closed")
})
}).listen(8001)
}
そして、あなたは、サーバー上で実行されている波打つしている場合は交換APIをサポートしています何のRPCやWSがありませんので、また、これは役立ちません。
- 1. セットと同等と同等
- 2. オープンタグとクローズタグを交換しますか?
- 3. トピック交換とRabbitMQのダイレクト交換
- 4. ブロッキングキューを同期交換する
- 5. ドラフトはjava-websocketライブラリを使用してcoinbase交換用websocketストリームに接続するときにハンドシェイクを拒否します
- 6. 交換用のControlTemplateを交換する
- 7. Pandasと同等のDaskが置換されますか?
- 8. Pythonと同等で同等の関数
- 9. webRTCでは、sdp交換が完了したら、websocketの役割は終了しましたか?
- 10. mysqli_resultをmysqliまたはsimular同等のソリューションに変換しますか?
- 11. 同等のC++タイムゾーン変換ですか?
- 12. annotationprocessorとaptは同等のものを設定します
- 13. IGroupingのキーを交換しますか?
- 14. Node.js WebSocketサーバーとC#クライアントの間でバイナリデータを交換するにはどうすればよいですか?
- 15. WebSocketとGopherJSの互換性
- 16. アッカHTTPのWebSocketクライアントと同等のは、私は、このノードスニペットでのWebSocketを使用する方法を表現する一部のユーザーマニュアルを持って
- 17. キーコードをキーと同等の文字列に変換する
- 18. Spring RestTemplateはbody jdkとDELETEを交換します。012
- 19. System.currentTimeMillisはJavaソフトウェアとAndroidを交換します
- 20. 交差のカスタム等価
- 21. ポインタとCとの交換
- 22. {0}は交換できますが{{0}}は交換できませんか?
- 23. 等しくないベクトルとIDの公差との交差
- 24. Spring WebsocketをJetty Websocketに変換する
- 25. テンプレートの同等性またはテンプレートの機能的同等性?
- 26. 他の同等の機能を扱う等しい変換関数を
- 27. 次同じIDの値とゼロの交換 - MySQLの
- 28. セルラーネットワーク:回線交換またはパケット交換?
- 29. BuildConfig.DEBUG(または同等の)
- 30. Rと同等