亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Python 中使用 Twitch IRC 時“由對等方重置連接”

在 Python 中使用 Twitch IRC 時“由對等方重置連接”

慕碼人8056858 2022-01-05 20:23:03
我嘗試用 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模塊。
查看完整描述

1 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

每 2 分鐘我自己 ping 服務器解決了這個問題。我剛剛添加了這個功能


import time, threading


def sendPing(s):

    print('sending PING')

    s.send("PING :tmi.twitch.tv")

    threading.Timer(120, sendPing, [s]).start()


sendPing(s)

在主循環之前。


查看完整回答
反對 回復 2022-01-05
  • 1 回答
  • 0 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號