Open fenhl opened 3 years ago
I randomly get this as well, and I had to downgrade to Tokio 0.2 otherwise I'd get an error related to Tokio's reactor not running. But it seems unpredictable.
Update: as a temporary workaround, I use a simple spinloop that tries to connect at most once per second. So if the connection fails, it'll try again one second later, until it (randomly) succeeds.
use tokio::{join, time::delay_for}; //Using the Tokio runtime
...
loop {
println!("connecting to twitch...");
//Avoid spinning like a maniac when an error occurs repeatedly
let minimum_loop_delay = delay_for(Duration::from_millis(1000));
//Join the two futures together so we wait on them both concurrently
match join!(twitch_loop(), minimum_loop_delay) {
(Ok(()), _) => println!("connected to twitch!"),
(Err(e), _) => println!("twitch conn. failed: {:?}", e),
}
}
Update2: it turns out if you change your password or enable 2FA, you get this error repeatedly and consistently until you generate a new OAuth2 key. Then it works like 90% of the time, the other 10% I just spinloop until it works, see my code above.
The best I was able to reproduce was by passing in a bogus oauth token. The streams looked like so:
> CAP REQ :twitch.tv/membership
> CAP REQ :twitch.tv/tags
> CAP REQ :twitch.tv/commands
> PASS oauth:12345....XYZ
> NICK mrhalzy
< :tmi.twitch.tv CAP * ACK :twitch.tv/membership
< :tmi.twitch.tv CAP * ACK :twitch.tv/tags
< :tmi.twitch.tv CAP * ACK :twitch.tv/commands
< :tmi.twitch.tv NOTICE * :Login authentication failed
I suspect it's the last line that doesn't parse.
After making the
tokio_demo
example compile by replacingtokio::time::delay_for
withtokio::time::sleep
, it gives the following output:No messages are actually sent to Twitch chat.