>  기사  >  백엔드 개발  >  긴 폴링 예제의 .Net MVC 구현 요약

긴 폴링 예제의 .Net MVC 구현 요약

零下一度
零下一度원래의
2017-06-17 10:30:031962검색

이 글은 롱 폴링을 구현하기 위한 .Net MVC 관련 정보를 위주로 소개하고 있으니 관심 있는 분들은 참고하시면 좋을 것 같습니다.

롱 폴링이 무엇인가요?

롱 폴링은 클라이언트가 자주 새로 고치거나 요청을 보내지 않고도 서버의 변경 사항을 클라이언트에 실시간으로 전송할 수 있는 "서버 푸시" 기술을 구현하는 방법입니다.

롱 폴링의 원리?

클라이언트는 Ajax 요청을 서버에 보낸 후 서버는 연결을 유지하고 해당 처리가 완료될 때까지 응답 정보를 반환하지 않고 연결을 닫습니다. 클라이언트는 응답 정보를 수신하고 관련 처리를 수행하며 완료 후 서버에 새로운 요청을 보냅니다.

장기 폴링의 적용 시나리오는 무엇입니까?

긴 폴링은 서버 측 변경 사항을 클라이언트에 실시간으로 전송해야 하는 웹 인스턴트 메시징, 모니터링 및 실시간 견적 시스템과 같은 시나리오에서 자주 사용됩니다.

장기 폴링의 장점과 단점은 무엇인가요?

장점: 메시지가 없으면 빈번한 요청이 서버로 전송되지 않습니다.

단점: 서버 연결을 유지하기 위해 더 많은 리소스를 소비합니다

구현:

프런트 엔드 코드:

콜백에서 function을 다시 호출하므로 각 요청이 닫힌 후 시작됩니다. 다음 요청.


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

백엔드 코드:

백엔드 컨트롤러는 비동기식을 사용해야 합니다. 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);
    }
  }

위 내용은 긴 폴링 예제의 .Net MVC 구현 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.