我嘗試用 Python 編寫自己的機器人,以通過其 IRC 界面連接 Twitch-chat 并與之交互。我有連接,可以接收和發送數據。我還用 PONG 回答傳入的 PING(它們在大約 5 分鐘后發送)。但是在大約 3 分鐘不活動后(所以在我什至得到 PING 之前)連接失敗了socket.error: [Errno 104] Connection reset by peer我使用socketPython 中的模塊進行連接。recv()在我的套接字上調用該方法時會發生錯誤。我能夠弄清楚的一些事情:在連接失敗之前,他們沒有傳入(未應答)PING。每次上次聊天消息和斷開連接之間的時間都在 3 分鐘左右。它足以接收一些東西(鏈接其他人的聊天消息)來重置這個計時器。我不需要自己發送任何東西。我首先想到的是我自己超時了,因為我很長時間沒有收到任何東西。情況似乎并非如此,因為如果我為socket.recv()I receive設置了較低的超時時間socket.timeout: timed out,而不是上面顯示的錯誤。我想我不會錯過任何發送給我的數據,因為所有聊天消息都會通過。但是為了確定起見,我在下面發布了用于接收數據的主循環。我現在的問題是,為什么連接失敗,我該如何防止這種情況發生?我感覺這是一個模糊的問題。這是我第一次嘗試使用 IRC 界面,我不知道如何獲得有關問題究竟是什么的更多信息。以防萬一,這是我用來接收數據的電源回路。我認為這很好用,因為所有聊天消息都通過了。但也許有一個錯誤,我錯過了一些傳入的數據(如 PING)。readbuffer = ''while True: readbuffer = readbuffer + s.recv(1024) temp = string.split(readbuffer, '\n') readbuffer = temp.pop() for line in temp: print(line) # PING/PONG if "PING :tmi.twitch.tv" in line: print("PONG :tmi.twitch.tv") s.send(line.replace('PING', 'PONG'))這s是一個socket()表單socket模塊。
在 Python 中使用 Twitch IRC 時“由對等方重置連接”
慕碼人8056858
2022-01-05 20:23:03