Discord WebHook處理流程(Guess??)
最近加了不少群組,也看到有些群組在使用webHook進行跨伺服器聊天,所以才有感而發地想寫一下跟測試一下處理流程到底是怎麼進行的。
(但說實在的我也不知道我測出來的理解對不對)
首先是簡單的點對點,一般理解下的運作是像下圖

使用者1在A群組頻道中發文,傳給discordBot,轉交給B群組的webHook進行發文。反之亦然。
可是當兩個頻道間訊息過度頻繁,抑或是A群組頻道過度頻繁發話,會造成訊息無法傳至另一端的狀況,但此情形過一段時間即會解決,中間漏傳的也會隨之補上。
此情境發生的原因應是WebHook的cache堆積,或是過度頻繁傳送訊息,導致伺服器端認為被DDoS攻擊之類的。但如果假設我們在設定的ClientOptions是給WebHook的,而不是給Discord Bot的呢?以下是我以上圖為例思考的分流傳送方式。

以一開始我的預想,這樣進行分流的話兩個WebHook的負擔應該會分擔處理,也可以發送更多的訊息而不會出現cacheMemory溢出的狀況。
因為我只有一個人,也沒辦法測試多人發話的狀況,所以以下是我寫的SourceCode,用迴圈跟TimeOut的方式輪流跑兩個webHook。
結果大概跑到第30則訊息的時候就卡住了....這什麼狀況?回頭看DiscordServer想重新建立WebHook重跑,結果出現
留言
張貼留言