Twitch reconnect IRC questions

I wrote a Twitch Chat Bot wrapper for a game so that a group of friends can play the game as a team from Twitch. It runs on Ubuntu. It is all working but I need to add code to handle a Twitch reconnect message. I have three questions:

1: After receiving the reconnect message can the code immediately send a message to the chat to inform the players that a reconnect is about to take place? For example could I send “Reconnect in progress, please wait”. Or will the socket connection be closed by the Twitch end very quickly after sending the reconnect message?

2: Assuming that I cannot do question 1, What do the players see in their chat windows, after Twitch has sent the reconnect and closes the socket connection?

3: I believe the flow of the reconnect is as follows:
Close the socket,
Open a new socket
Authenticate with Twitch.
Continue the game.
Is this correct?

Thanks
Graham

generally yes

It varies because not everyone reconnects at the same time

And your bot on reconnect might connect to the next server thats about to restart

Looks good to me

You may also be interested in EventSub Subscription Types | Twitch Developers

BarryCarlyon: First, thanks for the quick reply.

On my first question, I guess I actually put two question there. Is your “yes” to the first or second. I presume the second - Twitch will quickly close the socket connection…

Graham

RECONNECT is an indication that the server is going down

You may have time to send a message you may not.
Generally you will but it’s not reliable.

You’d be better off just RECONNECT rather than faffing trying to send

BarryCarlyon,

Again, thanks for the reply. I see you help a lot of members asking question. So thanks!!!

One last question. Any thoughts on how I can test that my reconnect code works. One idea I had was to just leave the bot running for a extended period of time and wait until Twitch needs to do maintenance on the server. My code at this time is logging all interaction with Twitch, so I will see the reconnect messages in the log and the result of doiing the reconnect code. But this seems like a kludge.

Correct

Also since a connection can break randomly without a RECONNECT due to your network/isp other factors

You need to reconnect for other reasons not JUST the server shutting down for restart.

EventSub is expected to have less breaking the connection restarts. So that might be a better option

  • Have a way to provide messages to your bot that it will treat as though they came from the network
  • Make a (mostly) transparent proxy that allows that, but otherwise just forwards messages between tmi and your bot. This way, the messages are coming over a real network socket
  • Just wait, if you don’t care how long it takes. And then if there’s a bug that you fixed, it will take however long again to figure out if there are more bugs

Yeah I mean at the end of the day you either get a RECONENCT and take action, or you miss it and get disconnected from the server, and then you take action.

So either way you reconnect “with sufficent speed”.

DevMcGee and BarryCrayon,
Thank again both of you for taking the time to reply. Both your replies made me realized that I have a way to test this. For the Twitch chat bot wrapper that I wrote for the game, I needed to test for a large number of players that were playing as a team. I did not want to create a large number of Twitch accounts for this, so I wrote a Twitch simulator that connects to Chat Bot via a socket. I can enhance the simulator to randomly close the socket (for non Twitch network issues) and also to randomly send a RECONNECT message and then close the socket.
Thanks,

Below I put a little write up on the Twitch chat bot wrapper and the Twitch simulator. Just ignore this if it is not of interest.

The games Twitch Chat Bot wrapper handles all the communication needed for Twitch. It also has a voting section. Within a "time slice, it could receive multiple commands from the users. Some may type in “do A” other “do B”, etc. The voting code looks at all the commands received within the “time slice” and passes the one with the most votes to the game.

The Twitch simulator send messages that look exactly like Twitch messages. It sets up a number of users based on a define and then accepts a command string of up to 4 commands. It then spread these commands across all the defined number of users and then randomly select a user and sends their command to the Chat Bot. It does this until it has sent a command for every user. It then gets the next set of commands. I was able to simulator more then 400 users before the commands started been received outside the “time slice”. At 700 users some commands come in when the next “time slice” opened. I could make the time slice larger and go much higher with the number of users.