Update documentation and tests
parent
0d47b69b3c
commit
ac1465d091
|
@ -764,9 +764,10 @@ The websocket interface provides the following requests:
|
||||||
|
|
||||||
The client can subscribe to the following events:
|
The client can subscribe to the following events:
|
||||||
|
|
||||||
- `subscribeNewBlock` - new block added to blockchain
|
- `subscribeNewBlock` - new block added to blockchain
|
||||||
- `subscribeAddresses` - new transaction for given address (list of addresses)
|
- `subscribeNewTransaction` - new transaction added to blockchain (mempool for all addresses)
|
||||||
- `subscribeFiatRates` - new currency rate ticker
|
- `subscribeAddresses` - new transaction for given address (list of addresses)
|
||||||
|
- `subscribeFiatRates` - new currency rate ticker
|
||||||
|
|
||||||
There can be always only one subscription of given event per connection, i.e. new list of addresses replaces previous list of addresses.
|
There can be always only one subscription of given event per connection, i.e. new list of addresses replaces previous list of addresses.
|
||||||
|
|
||||||
|
@ -791,5 +792,3 @@ Example for subscribing to an address (or multiple addresses)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1421,6 +1421,20 @@ func websocketTestsBitcoinType(t *testing.T, ts *httptest.Server) {
|
||||||
},
|
},
|
||||||
want: `{"id":"36","data":[{"time":1521514800,"txs":1,"received":"1","sent":"0","sentToSelf":"0","rates":{"eur":1301,"usd":2001}}]}`,
|
want: `{"id":"36","data":[{"time":1521514800,"txs":1,"received":"1","sent":"0","sentToSelf":"0","rates":{"eur":1301,"usd":2001}}]}`,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "websocket subscribeNewTransaction",
|
||||||
|
req: websocketReq{
|
||||||
|
Method: "subscribeNewTransaction",
|
||||||
|
},
|
||||||
|
want: `{"id":"37","data":{"subscribed":true}}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "websocket unsubscribeNewTransaction",
|
||||||
|
req: websocketReq{
|
||||||
|
Method: "unsubscribeNewTransaction",
|
||||||
|
},
|
||||||
|
want: `{"id":"38","data":{"subscribed":false}}`,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// send all requests at once
|
// send all requests at once
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
pendingMessages = {};
|
pendingMessages = {};
|
||||||
subscriptions = {};
|
subscriptions = {};
|
||||||
subscribeNewBlockId = "";
|
subscribeNewBlockId = "";
|
||||||
|
subscribeNewTransactionId = "";
|
||||||
subscribeAddressesId = "";
|
subscribeAddressesId = "";
|
||||||
if (server.startsWith("http")) {
|
if (server.startsWith("http")) {
|
||||||
server = server.replace("http", "ws");
|
server = server.replace("http", "ws");
|
||||||
|
@ -269,6 +270,33 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function subscribeNewTransaction() {
|
||||||
|
const method = 'subscribeNewTransaction';
|
||||||
|
const params = {
|
||||||
|
};
|
||||||
|
if (subscribeNewTransactionId) {
|
||||||
|
delete subscriptions[subscribeNewTransactionId];
|
||||||
|
subscribeNewTransactionId = "";
|
||||||
|
}
|
||||||
|
subscribeNewTransactionId = subscribe(method, params, function (result) {
|
||||||
|
document.getElementById('subscribeNewTransactionResult').innerText += JSON.stringify(result).replace(/,/g, ", ") + "\n";
|
||||||
|
});
|
||||||
|
document.getElementById('subscribeNewTransactionId').innerText = subscribeNewTransactionId;
|
||||||
|
document.getElementById('unsubscribeNewTransactionButton').setAttribute("style", "display: inherit;");
|
||||||
|
}
|
||||||
|
|
||||||
|
function unsubscribeNewTransaction() {
|
||||||
|
const method = 'unsubscribeNewTransaction';
|
||||||
|
const params = {
|
||||||
|
};
|
||||||
|
unsubscribe(method, subscribeNewTransactionId, params, function (result) {
|
||||||
|
subscribeNewTransactionId = "";
|
||||||
|
document.getElementById('subscribeNewTransactionResult').innerText += JSON.stringify(result).replace(/,/g, ", ") + "\n";
|
||||||
|
document.getElementById('subscribeNewTransactionId').innerText = "";
|
||||||
|
document.getElementById('unsubscribeNewTransactionButton').setAttribute("style", "display: none;");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function subscribeAddresses() {
|
function subscribeAddresses() {
|
||||||
const method = 'subscribeAddresses';
|
const method = 'subscribeAddresses';
|
||||||
var addresses = document.getElementById('subscribeAddressesName').value.split(",");
|
var addresses = document.getElementById('subscribeAddressesName').value.split(",");
|
||||||
|
@ -585,6 +613,20 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col" id="subscribeNewBlockResult"></div>
|
<div class="col" id="subscribeNewBlockResult"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<input class="btn btn-secondary" type="button" value="subscribe new transaction" onclick="subscribeNewTransaction()">
|
||||||
|
</div>
|
||||||
|
<div class="col-4">
|
||||||
|
<span id="subscribeNewTransactionId"></span>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<input class="btn btn-secondary" id="unsubscribeNewTransactionButton" style="display: none;" type="button" value="unsubscribe" onclick="unsubscribeNewTransaction()">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col" id="subscribeNewTransactionResult"></div>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<input class="btn btn-secondary" type="button" value="subscribe address" onclick="subscribeAddresses()">
|
<input class="btn btn-secondary" type="button" value="subscribe address" onclick="subscribeAddresses()">
|
||||||
|
|
Loading…
Reference in New Issue