為了確保信息請求消息的到達(dá)率,微信服務(wù)器在沒有及時收到響應(yīng)消息(ResponseMessage)的情況下,會多次發(fā)送同一條請求消息(RequestMessage),包括MsgId等在內(nèi)的所有文本內(nèi)容都是一致的。
這種機(jī)制確保了在諸如網(wǎng)絡(luò)狀況不佳的情況下消息的回復(fù)成功率,但是有時候由于服務(wù)器負(fù)荷、本身請求過程就需要好幾秒才能完成等情況,多次重復(fù)的消息反而成了服務(wù)器的負(fù)擔(dān),甚至對業(yè)務(wù)和數(shù)據(jù)也可能造成影響。
針對這種情況,SDK增加了去重的設(shè)置,只需要在使用MessageHandler的時候加一句話即可:
messageHandler.OmitRepeatedMessage = true;//啟用消息去重功能
/// <summary> /// 最簡化的處理流程(不加密) /// </summary> [HttpPost] [ActionName("MiniPost")] public ActionResult MiniPost(string signature, string timestamp, string nonce, string echostr) { if (!CheckSignature.Check(signature, timestamp, nonce, Token)) { return new WeixinResult("參數(shù)錯誤!");//v0.8+ } var messageHandler = new CustomMessageHandler(Request.InputStream, null, 10); messageHandler.OmitRepeatedMessage = true;//啟用消息去重功能 messageHandler.Execute();//執(zhí)行微信處理過程 return new FixWeixinBugWeixinResult(messageHandler); }
去重的原理是通過當(dāng)前用戶的上下文,判斷當(dāng)前請求消息和上一條請求消息的MsgId是否一致,如果一直的話則終止向下執(zhí)行。
文件:Senparc.Weixin.MessageHandlers.MessageHandler.cs
public virtual void OnExecuting() { if (OmitRepeatedMessage && CurrentMessageContext.RequestMessages.Count > 1) { var lastMessage = CurrentMessageContext.RequestMessages[CurrentMessageContext.RequestMessages.Count - 2]; if (lastMessage.MsgId != 0 && lastMessage.MsgId == RequestMessage.MsgId) { CancelExcute = true;//重復(fù)消息,取消執(zhí)行 } } }
更多微信公眾平臺開發(fā):請求消息去重相關(guān)文章請關(guān)注PHP中文網(wǎng)!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)