Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle broken aiohttp websocket in chat bot client #271

Merged
merged 3 commits into from
Oct 17, 2023

Commits on Oct 15, 2023

  1. Handle broken aiohttp websocket in chat bot client

    It turns out that aiohttp WebSocket code does not recognize if the
    underlying connection is broken:
    aio-libs/aiohttp#2309
    As a twitch client we know we'll at minimum receive a PING request every
    5 minutes even if no other channel updates are happening:
    https://dev.twitch.tv/docs/irc/#keepalive-messages
    (I tested this and saw every a ping request always happened between
    every 4min 1sec to 4min 51sec)
    
    If we miss a PING and fail to respond twitch considers the connection
    closed. Thus we can add a timeout to our websocket receive() call and if
    we've heard nothing in over 5 minutes our connection is broken and we
    should perform a reconnect. This has been tested running the bot, and
    then trying 3 different types of connection breaking:
    1) Disabling the network interface on my computer for 5 minutes
    2) Suspending laptop and resuming later
    3) Dropping related active NAT state on router (similar to rebooting router)
    Latent-Logic committed Oct 15, 2023
    Configuration menu
    Copy the full SHA
    329a8a6 View commit details
    Browse the repository at this point in the history

Commits on Oct 17, 2023

  1. Configuration menu
    Copy the full SHA
    eb54a7b View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c46c0be View commit details
    Browse the repository at this point in the history