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: 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)
} }
} }
``` ```

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

View File

@ -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()">