> 백엔드 개발 > C#.Net 튜토리얼 > .Net MVC 롱 폴링 구현 방법 정보

.Net MVC 롱 폴링 구현 방법 정보

巴扎黑
풀어 주다: 2018-05-23 16:22:13
원래의
1954명이 탐색했습니다.

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

롱 폴링이 무엇인가요?

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

롱 폴링의 원리?

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

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

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

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

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

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

구현:

프런트 엔드 코드:

콜백에서 함수를 다시 호출하여 각 요청이 닫힌 후 다음 요청을 시작합니다. .

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿