38 lines
797 B
Python
38 lines
797 B
Python
|
import uuid
|
||
|
import json
|
||
|
|
||
|
import websocket
|
||
|
|
||
|
from .response import EVMResponse
|
||
|
from cic_syncer.error import RequestError
|
||
|
|
||
|
|
||
|
|
||
|
class EVMWebsocketClient:
|
||
|
|
||
|
def __init__(self, url):
|
||
|
self.url = url
|
||
|
self.conn = websocket.create_connection(url)
|
||
|
|
||
|
|
||
|
def __del__(self):
|
||
|
self.conn.close()
|
||
|
|
||
|
|
||
|
def block_number(self):
|
||
|
req_id = str(uuid.uuid4())
|
||
|
req = {
|
||
|
'jsonrpc': '2.0',
|
||
|
'method': 'eth_blockNumber',
|
||
|
'id': str(req_id),
|
||
|
'params': [],
|
||
|
}
|
||
|
self.conn.send(json.dumps(req))
|
||
|
r = self.conn.recv()
|
||
|
res = EVMResponse('block_number', json.loads(r))
|
||
|
err = res.get_error()
|
||
|
if err != None:
|
||
|
raise RequestError(err)
|
||
|
|
||
|
return res.get_result()
|