Published
Edited
Feb 22, 2020
15 stars
Insert cell
Insert cell
socket = {
const socket = new WebSocket("wss://ws.blockchain.info/inv");
let opened, open = new Promise(resolve => opened = resolve);
socket.addEventListener("open", () => {
socket.send(JSON.stringify({op: "unconfirmed_sub"}));
opened();
});
await open;
invalidation.then(() => socket.close());
return socket;
}
Insert cell
ver1 = filter(
socket,
message => message.op === "utx" && message.x.ver === 1,
message => message.x
)
Insert cell
ver2 = filter(
socket,
message => message.op === "utx" && message.x.ver === 2,
message => message.x
)
Insert cell
function filter(socket, test = () => true, map = x => x) {
return Generators.observe(notify => {
function messaged(event) {
const message = JSON.parse(event.data);
if (test(message)) {
notify(map(message));
}
}
socket.addEventListener("message", messaged);
return () => socket.removeEventListener("message", messaged);
});
}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more