본문 바로가기
Programming

[web] 폴링(POLLING)

by 예닌잉 2020. 4. 3.
728x90

웹은 실시간을 위해 필수적인 지속되는 연결을 가질 수 없다.

HTTP의 특징으로 클라이언트에서 서버에 접속하면 응답하고 연결이 끊어진다.

대부분의 웹 실시간 서비스들은 사실적으로 실시간이 아닌것이다.

( 즉, 10초 단위 30초 단위라고 말할 수 있지만  … 실시간은 아닌 것 ! )

 

 ‘실시간’처럼 보이는 리얼타임 웹 모델에 대해 포스팅 할 것이다 !!! 

( 참고 : https://mohwaproject.tistory.com/entry/%E3%85%81%E3%85%81%E3%85%81

 

실시간 통신 방식 ( COMET ) 에는

폴링 ( Polling ) , 롱플링 ( Long Polling ), 스트리밍 ( Streaming ) 의 방식이 있다.

하나하나씩 차이를 비교해보는 포스팅을 해보려 한다.

 

 

 

    1. 폴링 ( Polling ) 

"폴링(polling)이란 하나의 장치(또는 프로그램)이 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치(또는 프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다."

 

== >  Ajax Polling 이라고도 불리는데, 주로 Ajax 호출을 사용하기 때문이다.

 

정리하자면

 

  • 브라우저가 일정한 주기로 HTTP 요청을 보내는 방식

  • 보통 실시간 데이터의 업데이트 주기는 예측하기 어려워 불필요한 서버 요청이 다수 생긴다. (  ==> 주기가 길면 실시간성이 떨어진다. )

 

- 클라이언트 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function ajax() {
 
    Ajax.request({
        url: 'http://m.fpscamp.com/m.aspx',
        type: 'text',
        method: 'post',
        headers: {
            'content-type''application/x-www-form-urlencoded'
        },
        data: {
        },
        onprogress: function (e, total, loaded, per, computable) {
        },
        onerrorfunction () {
            alert('onerror');
        },
        callback: function (data, status) {
            document.body.innerHTML = data;
        }
    });
};
 
 
//window.setInterval() 사용하여 브라우저에서 일정한 주기로 HTTP 요청을 서버로 보낸다.
var timer = window.setInterval(function () { ajax(); }, 1000);
cs
 
cs

 

 

 

- 서버 코드 (ASP.NET) 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using System.Net;
using System.Net.Sockets;
 
 
namespace FPSCamp.Potal.mobile
{
    public partial class m : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(DateTime.Now);
            Response.End();
        }
    }
}
cs

 

 

 

반응형