MCPcopy Create free account
hub / github.com/ccxt/node-binance-api / userMarginData

Method userMarginData

src/node-binance-api.ts:6170–6261  ·  view source on GitHub ↗

* Margin Userdata websockets function * @param {function} all_updates_callback * @param {function} execution_callback - optional execution callback * @param {function} subscribed_callback - subscription callback * @param {function} list_status_callback - status callback * @r

(all_updates_callback?: Callback, balance_callback?: Callback, execution_callback?: Callback, subscribed_callback?: Callback, list_status_callback?: Callback)

Source from the content-addressed store, hash-verified

6168 * @return {undefined}
6169 */
6170 userMarginData(all_updates_callback?: Callback, balance_callback?: Callback, execution_callback?: Callback, subscribed_callback?: Callback, list_status_callback?: Callback) {
6171 const self = this;
6172 const reconnect = () => {
6173 if (this.Options.reconnect) this.userMarginData(all_updates_callback, balance_callback, execution_callback, subscribed_callback, list_status_callback);
6174 };
6175
6176 // Set up callbacks
6177 this.Options.margin_all_updates_callback = all_updates_callback;
6178 this.Options.margin_balance_callback = balance_callback;
6179 this.Options.margin_execution_callback = execution_callback;
6180 this.Options.margin_list_status_callback = list_status_callback;
6181
6182 // Get listenToken from REST API
6183 this.apiRequest(this.sapi + 'v1/userListenToken', {}, 'POST').then((response: any) => {
6184 const listenToken = response.token;
6185 const expirationTime = response.expirationTime;
6186 this.Options.marginListenToken = listenToken;
6187 this.Options.marginListenTokenExpiry = expirationTime;
6188
6189 if (this.Options.verbose) {
6190 this.Options.log(`Margin listenToken obtained, expires at: ${new Date(expirationTime).toISOString()}`);
6191 }
6192
6193 // Connect to WebSocket API
6194 const connectionId = 'userMarginData';
6195 const ws = this.connectWsApi(connectionId, this.userMarginDataHandler.bind(this), reconnect);
6196
6197 ws.on('open', async () => {
6198 try {
6199 // Subscribe using userDataStream.subscribe.listenToken method
6200 const result = await this.sendWsApiRequest(connectionId, 'userDataStream.subscribe.listenToken', {
6201 listenToken: listenToken
6202 });
6203
6204 this.Options.marginDataSubscriptionId = result.subscriptionId;
6205 const subscriptionExpiry = result.expirationTime;
6206
6207 if (this.Options.verbose) {
6208 this.Options.log(`Margin Data Stream subscribed with subscriptionId: ${result.subscriptionId}`);
6209 this.Options.log(`Subscription expires at: ${new Date(subscriptionExpiry).toISOString()}`);
6210 }
6211
6212 // Set up renewal before expiration (renew 5 minutes before expiry)
6213 const renewalTime = subscriptionExpiry - Date.now() - (5 * 60 * 1000);
6214 if (renewalTime > 0) {
6215 setTimeout(async function renewSubscription() {
6216 try {
6217 // Get new listenToken
6218 const renewResponse: any = await self.apiRequest(self.sapi + 'v1/userListenToken', {}, 'POST');
6219 const newListenToken = renewResponse.token;
6220 const newExpirationTime = renewResponse.expirationTime;
6221
6222 if (self.Options.verbose) {
6223 self.Options.log(`New margin listenToken obtained, expires at: ${new Date(newExpirationTime).toISOString()}`);
6224 }
6225
6226 // Re-subscribe with new token
6227 const renewResult = await self.sendWsApiRequest(connectionId, 'userDataStream.subscribe.listenToken', {

Callers 1

reconnectMethod · 0.95

Calls 4

apiRequestMethod · 0.95
connectWsApiMethod · 0.95
sendWsApiRequestMethod · 0.95
logMethod · 0.80

Tested by

no test coverage detected