Maison  >  Article  >  développement back-end  >  À propos de la méthode d'implémentation de l'interrogation longue .Net MVC

À propos de la méthode d'implémentation de l'interrogation longue .Net MVC

巴扎黑
巴扎黑original
2018-05-23 16:22:131862parcourir

Cet article présente principalement les informations pertinentes de .Net MVC pour implémenter en détail les sondages longs. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer à

Qu'est-ce que le sondage long ?

L'interrogation longue est une méthode de mise en œuvre de la technologie "server push", qui peut transmettre les modifications sur le serveur au client en temps réel sans que le client n'actualise et n'envoie fréquemment des requêtes.

Principe du sondage long ?

Le client envoie une requête Ajax au serveur. Une fois que le serveur a reçu la requête, il maintient la connexion et ne renvoie pas de message. Il ne renvoie pas les informations de réponse et ferme la connexion jusqu'à ce que le client envoie une requête Ajax au serveur. le traitement pertinent est terminé. Une fois que le client a reçu les informations de réponse, effectuez le traitement pertinent, puis envoyez une nouvelle demande au serveur une fois le traitement terminé.

Quels sont les scénarios d’application du sondage long ?

Les interrogations longues sont souvent utilisées dans des scénarios tels que la messagerie instantanée Web, la surveillance et les systèmes de cotation en temps réel qui nécessitent que les modifications côté serveur soient envoyées au client en temps réel.

Quels sont les avantages et les inconvénients des sondages longs ?

Avantages : Les requêtes fréquentes ne seront pas envoyées au serveur en l'absence de message.

Inconvénients : Cela consomme plus de ressources pour garder le serveur connecté

Mise en œuvre :

Code front-end :

On appelle à nouveau dans la fonction de rappel pour démarrer la requête suivante après la fermeture de chaque requête.

<p id="container"></p>
<script type="text/javascript">
  $(function () {
    function longPolling() {
      $.getJSON("/DateTime/GetTime", function (json) {
        $("#container").append(json.date + "<br/>");
        longPolling();
      });
    };
    longPolling();
  });
</script>

Code backend :

Notre contrôleur d'arrière-plan doit utiliser le mode asynchrone et hériter de la classe de base AsyncController

public class DateTimeController : AsyncController
  {
    public void GetTimeAsync()
    {
      //计时器,5秒种触发一次Elapsed事件    
      System.Timers.Timer timer = new System.Timers.Timer(5000);
      //告诉.NET接下来将进行一个异步操作    
      AsyncManager.OutstandingOperations.Increment();
      //订阅计时器的Elapsed事件  
      timer.Elapsed += (sender, e) =>
      { //保存将要传递给GetTimeCompleted的参数        
        AsyncManager.Parameters["nowdate"] = e.SignalTime;
        //告诉ASP.NET异步操作已完成,进行GetTimeCompleted方法的调用        
        AsyncManager.OutstandingOperations.Decrement();
      };
      //启动计时器    
      timer.Start();
    }
    public ActionResult GetTimeCompleted(DateTime nowdate)
    {
      return Json(new { date = nowdate.ToString("HH:mm:ss") + " Welecom " }, JsonRequestBehavior.AllowGet);
    }
  }

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn