Metamask

為什麼即使我的節點在 HTTP 下工作,我也可以監聽 JSON-RPC 事件?

  • October 24, 2021

eth_subscribeJSON-RPC API 的方法需要全雙工連接,例如 WebSocket,因此通過 HTTP 連接訂閱事件是不可能的。

我使用 Ganache 作為乙太坊節點,使用 Metamask 作為瀏覽器提供程序來測試我的 dapp。Ganache 伺服器正在通過 HTTP 偵聽請求。儘管如此,dapp 在訂閱後接收來自提供商的通知沒有任何問題。

我是否理解 Metamask 在遇到 HTTP 伺服器時試圖通過任何其他方式(如輪詢)在底層獲取其事件?然後dapp開發者不用擔心使用者節點是否支持雙工連接,只要有Metamask即可。或者這都是 Ganache - 它只支持 WebSockets 嗎?

Metamask 還不支持 websocket。所有數據都發佈到 RPC。我正在開發一個自定義 RPC,我有點破解它。我到了發送原始事務的地步,但幾乎沒有記錄等待響應過程的 Metamask。到目前為止,我能說的是 Metamask 似乎正在等待下一個區塊。

eth_blockNumber

這就是我想要弄清楚的,但來自 Metamask 的呼叫。

我相信元遮罩在掛起時正在等待一個新塊。

當該塊數增加時。它獲取以下內容;

eth_getBlockByNumber

獲取塊然後

eth_getTransactionReceipt

之後,它會在每個新塊上獲取餘額和塊。

引用自:https://ethereum.stackexchange.com/questions/111914