728x90
웹은 실시간을 위해 필수적인 지속되는 연결을 가질 수 없다.
HTTP의 특징으로 클라이언트에서 서버에 접속하면 응답하고 연결이 끊어진다.
대부분의 웹 실시간 서비스들은 사실적으로 실시간이 아닌것이다.
( 즉, 10초 단위 30초 단위라고 말할 수 있지만 … 실시간은 아닌 것 ! )
‘실시간’처럼 보이는 리얼타임 웹 모델에 대해 포스팅 할 것이다 !!!
( 참고 : https://mohwaproject.tistory.com/entry/%E3%85%81%E3%85%81%E3%85%81 )
실시간 통신 방식 ( COMET ) 에는
폴링 ( Polling ) , 롱플링 ( Long Polling ), 스트리밍 ( Streaming ) 의 방식이 있다.
하나하나씩 차이를 비교해보는 포스팅을 해보려 한다.
-
폴링 ( 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) {
},
onerror: function () {
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 |
반응형