huobi_Golang
huobi_Golang copied to clipboard
Infinite reconnecting loop
Guys you don't reset p.lastReceivedTime
variable while reconnect so that's cause infinite reconnecting loop.
@filinvadim thanks for your question, p.lastReceivedTime
will not be reset (=time.Now()) until it reads something from remote server. If you see infinitie reconnecting loop, that’s indicate you didn’t successfully read message from remote server after reconnecting before the timeout. The default timeout (ReconnectWaitSecond) is 60 (1 min).
If you change ReconnectWaitSecond longer, does it resolve your problem?
Reading loop won't have time to get message because connection will be immediately closed due p.lastReceivedTime exceeding. Please reset p.lastReceivedTime. Guys, come on! It's obvious!
Off-top: what the idea of reconnecting for V2 client? Reconnecting logic doesn't do re-subscription. So basically it's useless.
In commit 73530f6, p.startReadLoop() is called only in Connect(). After reconnected, readLoop() has been stopped in disconnectWebSocket() and never be launched again.
@cj60205 Yes, that’s the reconnect failure issue introduced. Now it is resolved in latest master branch.
Reading loop won't have time to get message because connection will be immediately closed due p.lastReceivedTime exceeding. Please reset p.lastReceivedTime. Guys, come on! It's obvious!
Reading loop won't have time to get message because connection will be immediately closed due p.lastReceivedTime exceeding. Please reset p.lastReceivedTime. Guys, come on! It's obvious!
I understand the issue but I mentioned incorrect timeout settings in earlier reply. The tickerLoop will check the timeout every 5 seconds, which is defined in TimerIntervalSecond = 5
, if you increase TimerIntervalSecond
, is that helpful?
We want to understand the issue first and then resolve that. One of the soluiton is as you proposed, reset the p.lastReceivedTime
once the websocket connected. So please confirm above work around is working for you.
It won't work. Since lastReceivedTime
wasn't reset elapsedSecond
will be always bigger than ReconnectWaitSecond
.
My WS connection may be idle for hours. Therefore client will start reconnect infinitely.
if appropriate i can propose you all different approach: https://github.com/filinvadim/stubborn