Update documentation and tests

pull/574/head
kevin 2021-03-08 17:20:57 -07:00
parent 0d47b69b3c
commit ac1465d091
3 changed files with 60 additions and 5 deletions

View File

@ -764,9 +764,10 @@ The websocket interface provides the following requests:
The client can subscribe to the following events:
- `subscribeNewBlock` - new block added to blockchain
- `subscribeAddresses` - new transaction for given address (list of addresses)
- `subscribeFiatRates` - new currency rate ticker
- `subscribeNewBlock` - new block added to blockchain
- `subscribeNewTransaction` - new transaction added to blockchain (mempool for all addresses)
- `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.
@ -791,5 +792,3 @@ Example for subscribing to an address (or multiple addresses)
}
}
```

View File

@ -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}}]}`,
},
{
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

View File

@ -55,6 +55,7 @@
pendingMessages = {};
subscriptions = {};
subscribeNewBlockId = "";
subscribeNewTransactionId = "";
subscribeAddressesId = "";
if (server.startsWith("http")) {
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() {
const method = 'subscribeAddresses';
var addresses = document.getElementById('subscribeAddressesName').value.split(",");
@ -585,6 +613,20 @@
<div class="row">
<div class="col" id="subscribeNewBlockResult"></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="col">
<input class="btn btn-secondary" type="button" value="subscribe address" onclick="subscribeAddresses()">