Need a way to detect connection errors of websocket
Opened this issue · 2 comments
The error that occurred in stream reading is ignored now.
ethgo/jsonrpc/transport/websocket.go
Lines 91 to 98 in f671bdb
When we subscribe an event and get no messages, we can not know if the underlying websocket connection is healthy(the network may be down).
Maybe we should add a callback for all unexpected connection errors.
eg.
Subscribe(method string, callback func(b []byte), errHandler func(err error)) (func() error, error)
The proposal sounds okay. Can you share the error you get from the stream?
The proposal sounds okay. Can you share the error you get from the stream?
I subscribed for new heads:
events := make(chan []byte, 10000)
closeFn, err = WsRPC.Subscribe("newHeads", func(b []byte) {
events <- b
})
Then disable the network, will get a CloseError from gorilla/websocket
:
https://github.com/gorilla/websocket/blob/af47554f343b4675b30172ac301638d350db34a5/conn.go#L105