BSC websocket 端点延迟

Posted

技术标签:

【中文标题】BSC websocket 端点延迟【英文标题】:BSC websocket endpoint lantency 【发布时间】:2022-01-11 12:03:06 【问题描述】:

我最近正在尝试监控 BSC 链上合约地址的交易以获取我的 dex 限价订单,我终于找到了一个稳定的解决方案来监控日志事件——“使用 web sockect 连接”。

bsc = "wss://ws-nd-112-055-480.p2pify.com/xxxxxxxxxxxxxxxxxxx"
web3 = Web3(Web3.WebsocketProvider(bsc))
poolAdd = '0x0eD7e52944161450477ee417DE9Cd3a859b14fD0'
block_filter = web3.eth.filter('fromBlock': 'latest', 'address': poolAdd, 'topics': [sha128Dic['swap']])
while 1:
    log_new(block_filter)
    time.sleep(1)

但是,我尝试在下面的列表中更改一些 websokect 端点提供程序,交换事件日志仍有一些巨大的时间延迟。其中一些发生在将近一小时前。

wss://bsc-ws-node.nariox.org:443

莫拉利斯:https://moralis.io/speedy-nodes/

ANKR:https://app.ankr.com/api

链栈:https://chainstack.com/build-better-with-binance-smart-chain/

当我切换回 http 提供程序时,例如:Web3.HTTPProvider('https://bsc-dataseed.binance.org/')。事件日志几乎是及时的,但一些“过滤器未找到异常将在时间流逝期间发现”。

这是写在 BSC websocket 简介上的注释:'您可以发出 eth_getLogs 请求,最大块范围为 5K。如果您需要频繁拉取日志,我们建议您使用 WebSockets 在可用时将新日志推送给您。'

谁能帮忙找到一个更好的方法来获得一个及时的 websocket 端点?

【问题讨论】:

【参考方案1】:

Run your own node 用于最小化延迟。

如果你做不到,请打开你的钱包并browse the list of commercial node providers。

【讨论】:

以上是关于BSC websocket 端点延迟的主要内容,如果未能解决你的问题,请参考以下文章

HTTP/2 或 Websockets 用于低延迟客户端到服务器消息

Android websock 应用

通过 Websocket 或 HTTP 连接到在 VPS 上运行的 BSC 节点

SpringBoot - WebSocket

websock第一次连不上window

Android 使用WebSocket实现即时通讯功能,聊天功能