@ethersproject/providers#WebSocketProvider TypeScript Examples
The following examples show how to use
@ethersproject/providers#WebSocketProvider.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: EthService.ts From sakeperp-arbitrageur with BSD 3-Clause "New" or "Revised" License | 6 votes |
initProvider(): WebSocketProvider {
const provider = new WebSocketProvider(this.serverProfile.web3Endpoint)
provider._websocket.on("close", async (code: any) => {
await EthService.log.warn(
JSON.stringify({
event: "ReconnectWebSocket",
params: { code },
}),
)
provider._websocket.terminate()
await sleep(3000) // wait before reconnect
this.provider = this.initProvider() // reconnect and replace the original provider
})
return provider
}
Example #2
Source File: EthService.ts From sakeperp-arbitrageur with BSD 3-Clause "New" or "Revised" License | 5 votes |
provider!: WebSocketProvider
Example #3
Source File: index.tsx From nouns-monorepo with GNU General Public License v3.0 | 5 votes |
ChainSubscriber: React.FC = () => {
const dispatch = useAppDispatch();
const loadState = async () => {
const wsProvider = new WebSocketProvider(config.app.wsRpcUri);
const nounsAuctionHouseContract = NounsAuctionHouseFactory.connect(
config.addresses.nounsAuctionHouseProxy,
wsProvider,
);
const bidFilter = nounsAuctionHouseContract.filters.AuctionBid(null, null, null, null);
const extendedFilter = nounsAuctionHouseContract.filters.AuctionExtended(null, null);
const createdFilter = nounsAuctionHouseContract.filters.AuctionCreated(null, null, null);
const settledFilter = nounsAuctionHouseContract.filters.AuctionSettled(null, null, null);
const processBidFilter = async (
nounId: BigNumberish,
sender: string,
value: BigNumberish,
extended: boolean,
event: any,
) => {
const timestamp = (await event.getBlock()).timestamp;
const transactionHash = event.transactionHash;
dispatch(
appendBid(reduxSafeBid({ nounId, sender, value, extended, transactionHash, timestamp })),
);
};
const processAuctionCreated = (
nounId: BigNumberish,
startTime: BigNumberish,
endTime: BigNumberish,
) => {
dispatch(
setActiveAuction(reduxSafeNewAuction({ nounId, startTime, endTime, settled: false })),
);
const nounIdNumber = BigNumber.from(nounId).toNumber();
dispatch(push(nounPath(nounIdNumber)));
dispatch(setOnDisplayAuctionNounId(nounIdNumber));
dispatch(setLastAuctionNounId(nounIdNumber));
};
const processAuctionExtended = (nounId: BigNumberish, endTime: BigNumberish) => {
dispatch(setAuctionExtended({ nounId, endTime }));
};
const processAuctionSettled = (nounId: BigNumberish, winner: string, amount: BigNumberish) => {
dispatch(setAuctionSettled({ nounId, amount, winner }));
};
// Fetch the current auction
const currentAuction = await nounsAuctionHouseContract.auction();
dispatch(setFullAuction(reduxSafeAuction(currentAuction)));
dispatch(setLastAuctionNounId(currentAuction.nounId.toNumber()));
// Fetch the previous 24hours of bids
const previousBids = await nounsAuctionHouseContract.queryFilter(bidFilter, 0 - BLOCKS_PER_DAY);
for (let event of previousBids) {
if (event.args === undefined) return;
processBidFilter(...(event.args as [BigNumber, string, BigNumber, boolean]), event);
}
nounsAuctionHouseContract.on(bidFilter, (nounId, sender, value, extended, event) =>
processBidFilter(nounId, sender, value, extended, event),
);
nounsAuctionHouseContract.on(createdFilter, (nounId, startTime, endTime) =>
processAuctionCreated(nounId, startTime, endTime),
);
nounsAuctionHouseContract.on(extendedFilter, (nounId, endTime) =>
processAuctionExtended(nounId, endTime),
);
nounsAuctionHouseContract.on(settledFilter, (nounId, winner, amount) =>
processAuctionSettled(nounId, winner, amount),
);
};
loadState();
return <></>;
}