xf00f / web3x

Ethereum TypeScript Client Library - for perfect types and tiny builds.
211 stars 27 forks source link

`Legacy providers only support notification event.` when using `WebsocketProvider` #62

Open megaturbo opened 5 years ago

megaturbo commented 5 years ago

I'm using the WebsocketProvider and I want to listen to provider events like connect, error, etc...

Right now I'm using this:

import { WebsocketProvider } from "web3x/providers";

const provider = new WebsocketProvider(ws_provider_path);
provider.on("connect", () => console.log("Provider connected."));

But I keep getting this error:

Error: Legacy providers only support notification event.

So why is the WebsocketProvider a legacy provider ? And how can I setup a non-legacy provider to listen to this kind of events ?

xf00f commented 5 years ago

The current websocket provider, is the legacy provider wrapped in an adapter. Unfortunately the adapter is provider agnostic so isn't setup to deal with these new events. EIP 1193 remains a moving target (12 days ago https://github.com/ethereum/EIPs/pull/2240).

Regardless, it's would be useful to have providers that meet the spec as it stands. Unfortunately I don't have time to look into this right now. Happy to look over and accept good quality PR's...

megaturbo commented 5 years ago

Maybe I can help with that, I'll see what I can do when I have time.

For now, do you have any idea how to reconnect the provider after loss of connection ?

xf00f commented 5 years ago

It seems this may be an issue inherited from web3.js. https://github.com/ethereum/web3.js/issues/1354

Maybe the provider has been cleaned up and fixed in web3.js and can be migrated in. Right now not sure what to suggest. I maybe get a chance to look into this in next few weeks.

takahser commented 4 years ago

any updates on this?

takahser commented 3 years ago

EIP 1193 remains a moving target

@xf00f looks like EIP-1193 has been finalized: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1193.md

what's the best way to work on this?