diff options
author | Joe Rayhawk <jrayhawk@fairlystable.org> | 2022-10-29 16:45:30 -0700 |
---|---|---|
committer | Joe Rayhawk <jrayhawk@fairlystable.org> | 2022-10-29 16:45:30 -0700 |
commit | 2685cb0a5ff2736e7392a60436f762e67cdd104f (patch) | |
tree | f1bcf18f17eafeca9b7cd2f9240342fa43b92bf3 /src/obswebsocket.cr | |
parent | 7819ebe6c22e92b4d9bb2e6d9ec6ed8d864f0c0c (diff) | |
download | crystal-obs-websocket-2685cb0a5ff2736e7392a60436f762e67cdd104f.tar.gz crystal-obs-websocket-2685cb0a5ff2736e7392a60436f762e67cdd104f.zip |
Limit connection failure spam and add negotiated flag.
Diffstat (limited to 'src/obswebsocket.cr')
-rw-r--r-- | src/obswebsocket.cr | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/obswebsocket.cr b/src/obswebsocket.cr index 3dfa5cc..f758632 100644 --- a/src/obswebsocket.cr +++ b/src/obswebsocket.cr @@ -45,6 +45,10 @@ module OBSWebSocket @video = OBSWebSocket::VideoSettings.new( @@reqchan ) @stats = OBSWebSocket::Stats.new( @@reqchan ) @negotiated = false + @connecterror = 0 + def negotiated? + return @negotiated + end def reqchan return @@reqchan end @@ -177,6 +181,7 @@ module OBSWebSocket self.send( json_text ) when 2 # identified @negotiated = true + @connecterror = 0 self.reqchan.send( { nil, "clear queue" } ) when 5 # event eventsubs.each do | eventchan | @@ -244,6 +249,23 @@ module OBSWebSocket obs_pubsub.run sleep 10 next + rescue ex : Socket::ConnectError | IO::Error + if @connecterror < 3 + print ex.message + @connecterror += 1 + ( @connecterror == 3 ) && ( @connecterror += 1 ) && print ". Suppressing further repeat errors." + print "\n" + end + obs_pubsub && obs_pubsub.close + @negotiated = false + sleep 10 + next + rescue ex + pp ex + pp ex.backtrace? + obs_pubsub && obs_pubsub.close + @negotiated = false + next end end end |