検索
ホームページWeChat アプレットWeChatの開発WeChat パブリック プラットフォームの開発: リクエスト メッセージの重複排除

情報要求メッセージの到着率を確保するため、WeChatサーバーは応答メッセージ(ResponseMessage)を時間内に受信できない場合、同じ要求メッセージ(RequestMessage)を複数回送信します。MsgIdなどを含むすべてのテキストコンテンツは、の一貫した。

このメカニズムは、ネットワーク状態が悪い場合などのメッセージ返信の成功率を保証しますが、サーバーの負荷やリクエストの処理自体が完了するまでに数秒かかる場合、複数のメッセージが繰り返されることでサーバーに負担がかかる場合もあります。ビジネスとデータへの影響。

この状況に対応して、SDK は 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("参数错误!");//v0.8+
     }
 
     var messageHandler = new CustomMessageHandler(Request.InputStream, null, 10);
 
     messageHandler.OmitRepeatedMessage = true;//启用消息去重功能
 
     messageHandler.Execute();//执行微信处理过程
 
     return new FixWeixinBugWeixinResult(messageHandler);
 }

重複排除の原理は、現在のリクエストメッセージと前のリクエストをコンテキストを通じて判断することです。現在のユーザーのメッセージの MsgId が一致しているかどうかを確認し、一致している場合は下向きの実行を終了します。

ファイル: 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;//重复消息,取消执行
        }
    }
}


WeChat パブリック プラットフォーム開発の詳細については、メッセージの重複排除関連の記事をリクエストしてください。PHP 中国語 Web サイトにご注意ください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境