* 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 * @return {
(all_updates_callback?: Callback, balance_callback?: Callback, execution_callback?: Callback, subscribed_callback?: Callback, list_status_callback?: Callback)
| 6119 | * @return {undefined} |
| 6120 | */ |
| 6121 | userData(all_updates_callback?: Callback, balance_callback?: Callback, execution_callback?: Callback, subscribed_callback?: Callback, list_status_callback?: Callback) { |
| 6122 | const reconnect = () => { |
| 6123 | if (this.Options.reconnect) this.userData(all_updates_callback, balance_callback, execution_callback, subscribed_callback, list_status_callback); |
| 6124 | }; |
| 6125 | |
| 6126 | // Set up callbacks |
| 6127 | this.Options.all_updates_callback = all_updates_callback; |
| 6128 | this.Options.balance_callback = balance_callback; |
| 6129 | this.Options.execution_callback = execution_callback ? execution_callback : balance_callback; |
| 6130 | this.Options.list_status_callback = list_status_callback; |
| 6131 | |
| 6132 | // Connect to WebSocket API |
| 6133 | const connectionId = 'userData'; |
| 6134 | const ws = this.connectWsApi(connectionId, this.userDataHandler.bind(this), reconnect); |
| 6135 | |
| 6136 | ws.on('open', async () => { |
| 6137 | try { |
| 6138 | // Subscribe using userDataStream.subscribe.signature method |
| 6139 | const timestamp = Date.now(); |
| 6140 | const query = `apiKey=${this.APIKEY}×tamp=${timestamp}`; |
| 6141 | const signature = this.generateSignature(query); |
| 6142 | |
| 6143 | const result = await this.sendWsApiRequest(connectionId, 'userDataStream.subscribe.signature', { |
| 6144 | apiKey: this.APIKEY, |
| 6145 | timestamp: timestamp, |
| 6146 | signature: signature |
| 6147 | }); |
| 6148 | |
| 6149 | this.Options.userDataSubscriptionId = result.subscriptionId; |
| 6150 | if (this.Options.verbose) { |
| 6151 | this.Options.log(`User Data Stream subscribed with subscriptionId: ${result.subscriptionId}`); |
| 6152 | } |
| 6153 | |
| 6154 | if (subscribed_callback) subscribed_callback(connectionId); |
| 6155 | } catch (error) { |
| 6156 | this.Options.log('User Data Stream subscription error:', error.message); |
| 6157 | if (reconnect) setTimeout(reconnect, 5000); |
| 6158 | } |
| 6159 | }); |
| 6160 | } |
| 6161 | |
| 6162 | /** |
| 6163 | * Margin Userdata websockets function |
no test coverage detected