如何在Javascript中缩写功能代码(特别是websocket)?
每个交易交易所都有多个文件,这些文件具有运行Websocket的不同语法。从一个主文件中,如何使用缩小的代码从不同文件中调用这些函数中的任何一个?
示例:
binance.js
(交换1)
var client = await loadKeys();
client.ws.trades([symbol], async trade => {
console.log(trade);
});
main.js
const binance = require('../exchanges/binance.js');
(exchange).trade_socket("ETHBTC", async trade => {
console.log(trade);
});
因此,基本上,我想做的是使用自定义关键字“ trade_socket”来普遍调用任何交易所交易网络套接字。
我在binance.js函数中尝试了此操作,但没有成功:
var temp = client.ws.trades;
return temp;
答案 0 :(得分:-1)
您必须为每个交易所的API定义一个互操作层,该层将返回您定义的相同标准API。
假设您有几个公开不同API的第三方库。
const exchangeA = require('exchangeA');
const exchangeB = require('exchangeB');
const exchangeC = require('exchangeC');
const exchangeD = require('exchangeD');
return {
exchangeA: {
trade_socket: (sym, cb) => exchangeA.ws.keys(sym, cb)
}
exchangeB: {
trade_socket: (sym, cb) => exchangeB.performTrade(sym).then(cb)
}
exchangeC: {
trade_socket: (sym, cb) => exchangeC.setup().trade(sym, cb)
}
exchangeD: {
trade_socket: (sym, cb) => exchangeD.goofyApi.withSymbol(sym).trade().then(cb)
}
}
现在您可以选择任意交换,并希望能够调用相同的方法。
import exchangeShims = require('./my-shims');
const exchange = exchangeShims['exchangeB'];
exchange.trade_socket("ETHBTC", async trade => {
console.log(trade);
});