【问题标题】:How can I fetch data from OpenSea in real time?如何从 OpenSea 实时获取数据?
【发布时间】:2021-12-30 10:29:47
【问题描述】:

我构建了一个简单的 Web 应用程序,它根据我输入的钱包地址从 opensea 输出一个“NFT 钱包”。

现在假设发生了一笔交易并且钱包的所有者出售或购买了一个 nft,我如何实时更新我的​​ Web 应用程序?

换句话说,我如何从 api 监听钱包中的变化并实时输出?

app.js:

async function getNFT(address) {
    const response = await fetch("https://api.opensea.io/api/v1/assets?owner=" + address + "&order_direction=desc&offset=0&limit=20");
    const data = await response.json();
    console.log(data);
    let NFTWallet = [];
    for (const asset of data.assets) {
        const NFT = {
            url: asset.image_url,
            name: asset.asset_contract.name
        }
        NFTWallet.push(NFT);
        let nft = document.createElement("span");
        let image = document.createElement("span");
        image.innerHTML = "<img src='" + NFT.url + "' width=\"84px\" height=\"84px\" title=\"" + NFT.name + "\"/>";
        nft.appendChild(image);
        document.getElementById("nft-wallet").appendChild(nft);
    }
    console.log(NFTWallet);
}

window.addEventListener("load", getNFT("wallet-adress"));//input wallet in getNft()

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>OpenSea Connection</title>
    <script src="app.js"></script>
</head>
<body>
    <h1>NFT Wallet</h1>
    <div id="nft-wallet"></div>
</body>
</html>

【问题讨论】:

  • 我注意到retrieving events 示例似乎总是导致 HTTP 403 Forbidden。
  • 我认为没有办法监听帐户事件,但您可以使用 web3.Contract() 订阅该合同的事件。

标签: javascript real-time opensea


【解决方案1】:

您需要在本地存储函数 getNFT 的第一个响应的结果,例如使用 Window.localStorage,并使用 setInterval() 再次调用函数 getNFT,在执行之间有延迟,并将结果与​​之前的值进行比较.

Window.localStorage

setInterval()

【讨论】:

  • 感谢您的回答,但这不是我想要的,我想从 api 中听取更改,而不是每次设置一个新的 json 并将其与旧的 json 进行比较跨度>
猜你喜欢
  • 2022-01-26
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
相关资源
最近更新 更多