집 >백엔드 개발 >C#.Net 튜토리얼 >.Net MVC 롱 폴링 구현 방법 정보
이 글은 롱 폴링을 구현하기 위한 .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 중국어 웹사이트의 기타 관련 기사를 참조하세요!