์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ์์ด์์ค์ ์๋ฌธ์ ํ๊ธฐ[ํธ์ง]
์์ด์์ค ๋ฌธ์ ์ฐธ์กฐ.
2. ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ[ํธ์ง]
2.1. ๊ฐ์[ํธ์ง]
AJAX๋ Asynchronous JavaScript and XML์ ์ฝ์๋ก, ๋ง ๊ทธ๋๋ก JavaScript์ XML์ ์ด์ฉํ ๋น๋๊ธฐ์ ์ ๋ณด ๊ตํ ๊ธฐ๋ฒ์ด๋ค.
๊ฐ๋ ์ ์ผ๋ก 1999๋ 3์์ ์ด๋ฏธ ์ ๋ฆฝ๋์ด ์์์ง๋ง, ์ฉ์ด ์์ฒด๋ 2005๋ 2์ 18์ผ Jesse James Garrett์ ์ํด ์ฒ์ ์ฌ์ฉ๋์๋ค. ์ด๋ฆ์ XML์ด๋ผ๊ณ ๋ช ์๋์ด์๊ธด ํ์ง๋ง JSON์ด๋ ์ผ๋ฐ ํ ์คํธ ํ์ผ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ค๋ธ์ ํธ๋ค๋ ์ฌ์ฉ ๊ฐ๋ฅํด์ ์์ฆ์ XML์ ์ ์ ์ฐ๊ณ ์ญ์คํ๊ตฌ JSON์ ๋ค๋ฃฌ๋ค. ์ฉ์ด์ ์ค์ ๊ธฐ์ ๊ฐ์ ์ฐจ์ด๊ฐ ์ปค์ ธ์ ์์ฆ์๋ ์ฝ์ด๊ฐ ์๋ ๊ณ ์ ๋ช ์ฌ ์ทจ๊ธํ๊ณ ์๋ค.
๊ฐ๋ ์ ์ผ๋ก 1999๋ 3์์ ์ด๋ฏธ ์ ๋ฆฝ๋์ด ์์์ง๋ง, ์ฉ์ด ์์ฒด๋ 2005๋ 2์ 18์ผ Jesse James Garrett์ ์ํด ์ฒ์ ์ฌ์ฉ๋์๋ค. ์ด๋ฆ์ XML์ด๋ผ๊ณ ๋ช ์๋์ด์๊ธด ํ์ง๋ง JSON์ด๋ ์ผ๋ฐ ํ ์คํธ ํ์ผ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ค๋ธ์ ํธ๋ค๋ ์ฌ์ฉ ๊ฐ๋ฅํด์ ์์ฆ์ XML์ ์ ์ ์ฐ๊ณ ์ญ์คํ๊ตฌ JSON์ ๋ค๋ฃฌ๋ค. ์ฉ์ด์ ์ค์ ๊ธฐ์ ๊ฐ์ ์ฐจ์ด๊ฐ ์ปค์ ธ์ ์์ฆ์๋ ์ฝ์ด๊ฐ ์๋ ๊ณ ์ ๋ช ์ฌ ์ทจ๊ธํ๊ณ ์๋ค.
2.2. ์ญ์ฌ[ํธ์ง]
Ajax๊ฐ ๋ฑ์ฅํ๊ธฐ ์ด์ ์๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ค ์ ๋ณด๋ฅผ ์์ฒญํ๋ฉด ์๋ฒ๋ ํด๋น ์ ๋ณด๋ฅผ ํฌํจํ ํ์ด์ง ์ ์ฒด๋ฅผ ์ ๋ฌํด ์ฃผ์๋ค. ์น ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ๋งํฌ์
๋ฐ์ดํฐ(HTML)๋ฅผ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ๋ ๋๋งํ๋ ์ผ์ ํ๋ค. ์ฌ์ค ์ด ๋ฐฉ๋ฒ์ ์น ๋ธ๋ผ์ฐ์ ์๊ฒ๋, ์๋ฒ์๊ฒ๋ ์๋ก ๋ถํธํ๋๋ฐ ๋ธ๋ผ์ฐ์ ๋ ๋งค๋ฒ ๋๊ฐ์ ๋ ์ด์์์ ํ์ด์ง๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ๋ ๋๋งํด์ผ ํ๊ณ ์๋ฒ ์ญ์ ๋งค๋ฒ ๊ฐ์ ํ์ด์ง๋ฅผ ๋ ๋๋ง(์ด ๊ฒฝ์ฐ์๋ HTML ํ์ผ ์์ฑ)ํด์ผ ํด์ ์๋ก ๋ถ๋ด์ด ๋์๋ค. Ajax ๊ธฐ์ ์ ์ฌ์ฉํ์ง ์๋ ์ฌ์ดํธ๊ฐ ํน์ ์ ๊น๋นก๊ฑฐ๋ฆผ ํ์์ด ์๊ธฐ๋ ์ด์ ๊ฐ ๋งค๋ฒ ํ์ด์ง๋ฅผ ์น ์ง์ฐ๊ณ ์ฒ์๋ถํฐ ๋ค์ ๋ชจ๋ ๊ฒ์ ๊ทธ๋ ค๋ด๊ธฐ ๋๋ฌธ์ด๋ค.
Ajax๋ ์น ํ์ด์ง์ ๋์์ธ ์์์ ์ ๋ณด ์์๋ฅผ ๋ถ๋ฆฌํ๋ค. ์ฒ์ ์ฌ์ดํธ์ ์ ์ํ๋ฉด ์น ์๋ฒ๋ ํด๋น ํ์ด์ง์ ์คํ์ผ๊ณผ ๋ ์ด์์์ ์ ์ํ๋ ์ ์ HTML ํ์ผ๊ณผ CSS ํ์ผ, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์์ฒญํ๋ฉด ๋๋์ง๋ฅผ ์ค๋ช ํ JavaScript ํ์ผ์ ์ ๋ฌํ๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ผ๋จ ์ด ๋ด์ฉ์ผ๋ก ํ์ด์ง์ ๊ธฐ๋ณธ์ ์ธ ๊ณจ๊ฒฉ์ ๊ตฌ์ถํด ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณจ๊ฒฉ์ ๊ตฌ์ถ์ด ๋๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ ๋ฌ๋ฐ์ JavaScript๋ฅผ ์คํํด์ ์๋ฒ์ ๋ฐ์ดํฐ๋ง์ ๋ณ๋๋ก ์์ฒญํ๋ค. ์ด ๋ ์๋ฒ์์ ์ฃผ๋ ์๋ต์ ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด ์ฆ XML ๋๋ JSON ๋ฐ์ดํฐ์ด๋ค.[1] ๋ธ๋ผ์ฐ์ ๊ฐ ์ด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ฉด ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋ ํ ์์ ์ ์ ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ผ์ ๋ฃ๋๋ค.
๊ณผ๊ฑฐ ์ด๋ฐ ์์ HTTP ํ๋กํ ์ฝ์ ์ด์ฉํ ๋น๋๊ธฐ ํต์ ์ Ajax๋ผ๋ ์ฉ์ด๋ง ์์์ ๋ฟ, ์ง๊ธ ์ฌ๋๋ค์ด ์๊ฐํ๋ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ MS๊ฐ Ajax๊ฐ์ ๊ธฐ๋ฅ์ ์ ์ผํ๊ฒ ์ ๊ณตํ๊ณ ์์๋ค.
MS๋ 1999๋ 3์์ ๋ฐํ๋ Internet Explorer 5๋ถํฐ ๋์ ๋ ๋ ์ ๊ท๊ฒฉ์ธ MSXML 2.0์ ํฌํจ๋ 'Microsoft.XMLHTTP'๋ผ๋ ์ปดํฌ๋ํธ๊ฐ ํ์ฌ์ Ajax์ ๊ฑฐ์ ๋์ผํ ๊ฐ๋ ์ผ๋ก์จ ์ ์ผํ๊ฒ ์ ๊ณตํ๊ณ ์์๋ค. ์ด ์ปดํฌ๋ํธ๋ ๋ธ๋ผ์ฐ์ ์ ๊ณ ์ ์คํ์ด ์๋ ์๋์ฐ์ ํ์ฌ๋ ActiveX๋ฅผ ํธ์ถํด์ ์จ์ผ ํ๋ ๋นํ์ค ๊ธฐ์ ์ด๋ฉฐ, ๋ฌด๊ฑฐ์ด http๋ก ๋ฌด๊ฑฐ์ด XML์ ๋ฐ์์จ๋ค๋ ์ฌ์ค์[2] ์๋ฌด๋ ๊ฑฐ๋ค๋ ๋ณด์ง ์๋ ๊ธฐ์ ์ด์๋ค.
๊ทธ๋ฌ๋ ์์ค์ 1998๋ ๋ ์ฏค ๋ค์ค์์ฆ์ ์ธ์ดํด๋ฝ์ด ์ค์๊ฐ ์ฑํ ์ ๊ตฌํํ๊ธฐ ์ํด ํ์ด์ง ๋ฆฌํ๋์๋ hidden iframe ํธ๋ฆญ ๊ฐ์ ๊ฒ๋ค[3] ๋์ ์๋ฌด๋ ์ ์ฐ๋ ์ด ๊ธฐ์ ์ ์ฌ์ฉํ๊ฒ ๋๋ค. ๋น์ IE์ ๊ฒฝ์ ์น ๋ธ๋ผ์ฐ์ ์๋ Netscape๋ ์ด๋ฐ ๊ธฐ์ ์ ์ง์ํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ธ์ดํด๋ฝ์ ์ด์ฉ ์ ์์ด IE ์ ์ฉ์ผ๋ก๋ง ์ด์ฉ์ด ๊ฐ๋ฅํ์๋ค.
์๊ฐ์ด ํ๋ฌ Netscape์ ํผ๋ฅผ ์ด์ด๋ฐ์ ๋ชจ์ง๋ผ๊ฐ 2000๋ 12์ 6์ผ์ Firefox์ ์ฌ์ฉ๋ ์์ง ์ค ํ๋์ธ Gecko 0.6 ๋ฒ์ ์ XMLHttpRequest ๋งค์๋๊ฐ ์ถ๊ฐ๋์์ง๋ง 2002๋ 6์ 5์ผ์ ๋ฐํ๋ Gecko 1.0 ๋ฒ์ ๋ถํฐ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฌ์ฉ๋์๊ณ , ์ฌํ๋ฆฌ 2004๋ 2์ 1.2 ๋ฒ์ ๋ถํฐ, ์คํ๋ผ๋ 2005๋ 4์๋ถํฐ ์ฐ๋ฌ์ ๋์ ๋์๋ค.
๋ค๋ฅธ ์น ๋ธ๋ผ์ฐ์ ๋ค์ด XMLHttpRequest๋ฅผ ๋์ ํ ์ฆ์์ ๊ตฌ๊ธ์ 2004๋ 4์ 1์ผ์ ๋ฐํ๋ Gmail, 2005๋ 2์ 8์ผ์ ๋ฐํ๋ ๊ตฌ๊ธ ์ง๋๊ฐ ์๋ฌด๋ฐ ํ๋ฌ๊ทธ์ธ ์์ด AJAX๋ก ๊ตฌํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ฐํ์ง๋ฉด์ ํ์ ๊ฑฐ๋ฆฌ๊ฐ ๋์๋ค. ๊ตฌ๊ธ ์ง๋์ ๋ฐํ๋ก๋ถํฐ ์ดํ ๋ค Jesse James Garrett๊ฐ ์ด๋ฌํ ๋น๋๊ธฐ ํต์ ์ "์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์๋ก์ด ์ ๊ทผ ๋ฐฉ์, Ajax"๋ผ๊ณ ๋ถ๋ฅด๋ฉด์ ์งง์ ๊ธ์์ ์ฌ์ด ๋ฐ์ ๋๋ถ์ ์ ์ฐจ ๊ณ ์ ๋ช ์ฌ์ฒ๋ผ ๊ตณ์ด์ก๋ค.
ํนํ, ๊ตฌ๊ธ ์ง๋๊ฐ ๋ง ๋์์ ๋์ ์ถฉ๊ฒฉ์ ์ธ ๋ฐ์์ ๊ตญ๋ด์์ ๋์ฑ ๋๋๋ฌ์ก๋๋ฐ, ๋น์ ํ๊ตญ์ ์ง๋ ์๋น์ค๋ ์ด์ด๋ฉด ์ด ActiveX ๊ธฐ๋ฐ์ด์๊ธฐ ๋๋ฌธ์ด๋ค. ActiveX ์์ด ์ง๋ ๊ฐ์ ์๋น์ค๊ฐ ๊ตฌํ๋๋ค๋ ์ฌ์ค์ด ๊ตญ๋ด์์๋ ํฐ ์ถฉ๊ฒฉ์ผ๋ก ๋ค๊ฐ์๊ณ , ๊ตญ๋ด์์๋ ๋๋๋๋ ์ง๋๋ฅผ AJAX ๊ธฐ๋ฐ์ผ๋ก ๋ฐ๊พธ์๋ค.
Ajax ๊ธฐ์ ์ ํ๋ ์น ์ฌ์ดํธ๋ฅผ ์งํฑํ๋ ๊ทผ๊ฐ(์ฝ์ด) ๊ธฐ์ ์ด ๋ ์ง ์ค๋์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ์๋ ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ ์์ผ๋ฉฐ ๋๊ท๋ชจ ์น ํ๋ ์์ํฌ๋ ์์ Ajax ๊ธฐ๋ฅ์ ๋ด์ฅํ๊ณ ์๊ธฐ๋ ํ๋ค. axios๋ Oboe ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ด ๋น๋๊ธฐ HTTP ์์ฒญ๋ง ์ ๋ฌธ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์๋ค. ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ๋์ด์ HTTP ํ๋กํ ์ฝ์ ๊น์ํ ๊ณณ๊น์ง ๊ฑด๋๋ฆฌ๋ ๊ณ ๊ธ RESTful API๋ jQuery์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ง์ผ๋ก๋ ๋ถ์กฑํ ๋๊ฐ ์๋ค.
Ajax๋ ์น ํ์ด์ง์ ๋์์ธ ์์์ ์ ๋ณด ์์๋ฅผ ๋ถ๋ฆฌํ๋ค. ์ฒ์ ์ฌ์ดํธ์ ์ ์ํ๋ฉด ์น ์๋ฒ๋ ํด๋น ํ์ด์ง์ ์คํ์ผ๊ณผ ๋ ์ด์์์ ์ ์ํ๋ ์ ์ HTML ํ์ผ๊ณผ CSS ํ์ผ, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์์ฒญํ๋ฉด ๋๋์ง๋ฅผ ์ค๋ช ํ JavaScript ํ์ผ์ ์ ๋ฌํ๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ผ๋จ ์ด ๋ด์ฉ์ผ๋ก ํ์ด์ง์ ๊ธฐ๋ณธ์ ์ธ ๊ณจ๊ฒฉ์ ๊ตฌ์ถํด ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณจ๊ฒฉ์ ๊ตฌ์ถ์ด ๋๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ ๋ฌ๋ฐ์ JavaScript๋ฅผ ์คํํด์ ์๋ฒ์ ๋ฐ์ดํฐ๋ง์ ๋ณ๋๋ก ์์ฒญํ๋ค. ์ด ๋ ์๋ฒ์์ ์ฃผ๋ ์๋ต์ ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด ์ฆ XML ๋๋ JSON ๋ฐ์ดํฐ์ด๋ค.[1] ๋ธ๋ผ์ฐ์ ๊ฐ ์ด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ฉด ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋ ํ ์์ ์ ์ ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ผ์ ๋ฃ๋๋ค.
๊ณผ๊ฑฐ ์ด๋ฐ ์์ HTTP ํ๋กํ ์ฝ์ ์ด์ฉํ ๋น๋๊ธฐ ํต์ ์ Ajax๋ผ๋ ์ฉ์ด๋ง ์์์ ๋ฟ, ์ง๊ธ ์ฌ๋๋ค์ด ์๊ฐํ๋ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ MS๊ฐ Ajax๊ฐ์ ๊ธฐ๋ฅ์ ์ ์ผํ๊ฒ ์ ๊ณตํ๊ณ ์์๋ค.
MS๋ 1999๋ 3์์ ๋ฐํ๋ Internet Explorer 5๋ถํฐ ๋์ ๋ ๋ ์ ๊ท๊ฒฉ์ธ MSXML 2.0์ ํฌํจ๋ 'Microsoft.XMLHTTP'๋ผ๋ ์ปดํฌ๋ํธ๊ฐ ํ์ฌ์ Ajax์ ๊ฑฐ์ ๋์ผํ ๊ฐ๋ ์ผ๋ก์จ ์ ์ผํ๊ฒ ์ ๊ณตํ๊ณ ์์๋ค. ์ด ์ปดํฌ๋ํธ๋ ๋ธ๋ผ์ฐ์ ์ ๊ณ ์ ์คํ์ด ์๋ ์๋์ฐ์ ํ์ฌ๋ ActiveX๋ฅผ ํธ์ถํด์ ์จ์ผ ํ๋ ๋นํ์ค ๊ธฐ์ ์ด๋ฉฐ, ๋ฌด๊ฑฐ์ด http๋ก ๋ฌด๊ฑฐ์ด XML์ ๋ฐ์์จ๋ค๋ ์ฌ์ค์[2] ์๋ฌด๋ ๊ฑฐ๋ค๋ ๋ณด์ง ์๋ ๊ธฐ์ ์ด์๋ค.
๊ทธ๋ฌ๋ ์์ค์ 1998๋ ๋ ์ฏค ๋ค์ค์์ฆ์ ์ธ์ดํด๋ฝ์ด ์ค์๊ฐ ์ฑํ ์ ๊ตฌํํ๊ธฐ ์ํด ํ์ด์ง ๋ฆฌํ๋์๋ hidden iframe ํธ๋ฆญ ๊ฐ์ ๊ฒ๋ค[3] ๋์ ์๋ฌด๋ ์ ์ฐ๋ ์ด ๊ธฐ์ ์ ์ฌ์ฉํ๊ฒ ๋๋ค. ๋น์ IE์ ๊ฒฝ์ ์น ๋ธ๋ผ์ฐ์ ์๋ Netscape๋ ์ด๋ฐ ๊ธฐ์ ์ ์ง์ํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ธ์ดํด๋ฝ์ ์ด์ฉ ์ ์์ด IE ์ ์ฉ์ผ๋ก๋ง ์ด์ฉ์ด ๊ฐ๋ฅํ์๋ค.
์๊ฐ์ด ํ๋ฌ Netscape์ ํผ๋ฅผ ์ด์ด๋ฐ์ ๋ชจ์ง๋ผ๊ฐ 2000๋ 12์ 6์ผ์ Firefox์ ์ฌ์ฉ๋ ์์ง ์ค ํ๋์ธ Gecko 0.6 ๋ฒ์ ์ XMLHttpRequest ๋งค์๋๊ฐ ์ถ๊ฐ๋์์ง๋ง 2002๋ 6์ 5์ผ์ ๋ฐํ๋ Gecko 1.0 ๋ฒ์ ๋ถํฐ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฌ์ฉ๋์๊ณ , ์ฌํ๋ฆฌ 2004๋ 2์ 1.2 ๋ฒ์ ๋ถํฐ, ์คํ๋ผ๋ 2005๋ 4์๋ถํฐ ์ฐ๋ฌ์ ๋์ ๋์๋ค.
๋ค๋ฅธ ์น ๋ธ๋ผ์ฐ์ ๋ค์ด XMLHttpRequest๋ฅผ ๋์ ํ ์ฆ์์ ๊ตฌ๊ธ์ 2004๋ 4์ 1์ผ์ ๋ฐํ๋ Gmail, 2005๋ 2์ 8์ผ์ ๋ฐํ๋ ๊ตฌ๊ธ ์ง๋๊ฐ ์๋ฌด๋ฐ ํ๋ฌ๊ทธ์ธ ์์ด AJAX๋ก ๊ตฌํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ฐํ์ง๋ฉด์ ํ์ ๊ฑฐ๋ฆฌ๊ฐ ๋์๋ค. ๊ตฌ๊ธ ์ง๋์ ๋ฐํ๋ก๋ถํฐ ์ดํ ๋ค Jesse James Garrett๊ฐ ์ด๋ฌํ ๋น๋๊ธฐ ํต์ ์ "์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์๋ก์ด ์ ๊ทผ ๋ฐฉ์, Ajax"๋ผ๊ณ ๋ถ๋ฅด๋ฉด์ ์งง์ ๊ธ์์ ์ฌ์ด ๋ฐ์ ๋๋ถ์ ์ ์ฐจ ๊ณ ์ ๋ช ์ฌ์ฒ๋ผ ๊ตณ์ด์ก๋ค.
ํนํ, ๊ตฌ๊ธ ์ง๋๊ฐ ๋ง ๋์์ ๋์ ์ถฉ๊ฒฉ์ ์ธ ๋ฐ์์ ๊ตญ๋ด์์ ๋์ฑ ๋๋๋ฌ์ก๋๋ฐ, ๋น์ ํ๊ตญ์ ์ง๋ ์๋น์ค๋ ์ด์ด๋ฉด ์ด ActiveX ๊ธฐ๋ฐ์ด์๊ธฐ ๋๋ฌธ์ด๋ค. ActiveX ์์ด ์ง๋ ๊ฐ์ ์๋น์ค๊ฐ ๊ตฌํ๋๋ค๋ ์ฌ์ค์ด ๊ตญ๋ด์์๋ ํฐ ์ถฉ๊ฒฉ์ผ๋ก ๋ค๊ฐ์๊ณ , ๊ตญ๋ด์์๋ ๋๋๋๋ ์ง๋๋ฅผ AJAX ๊ธฐ๋ฐ์ผ๋ก ๋ฐ๊พธ์๋ค.
Ajax ๊ธฐ์ ์ ํ๋ ์น ์ฌ์ดํธ๋ฅผ ์งํฑํ๋ ๊ทผ๊ฐ(์ฝ์ด) ๊ธฐ์ ์ด ๋ ์ง ์ค๋์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ์๋ ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ ์์ผ๋ฉฐ ๋๊ท๋ชจ ์น ํ๋ ์์ํฌ๋ ์์ Ajax ๊ธฐ๋ฅ์ ๋ด์ฅํ๊ณ ์๊ธฐ๋ ํ๋ค. axios๋ Oboe ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ด ๋น๋๊ธฐ HTTP ์์ฒญ๋ง ์ ๋ฌธ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์๋ค. ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ๋์ด์ HTTP ํ๋กํ ์ฝ์ ๊น์ํ ๊ณณ๊น์ง ๊ฑด๋๋ฆฌ๋ ๊ณ ๊ธ RESTful API๋ jQuery์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ง์ผ๋ก๋ ๋ถ์กฑํ ๋๊ฐ ์๋ค.
2.3. ์๋ฆฌ[ํธ์ง]
- ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ดํธ์ ์ ์ํ๋ฉด ์๋ฒ๋ ์ฌ์ดํธ์ ๊ธฐ๋ณธ ์ผ๊ฐ๋ฅผ ๋ด์ 'ํ ํ๋ฆฟ'์ ์ ๋ฌํ๋ค.
- ๊ณ์ํด์ ์๋ฒ๋ ๋ฐ์ดํฐ์ ์์ฒญ ๋ฐฉ์๊ณผ ์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๊ฐ๊ณตํด์ผ ํ๋์ง๋ฅผ ๊ธฐ์ ํ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์ ๋ฌํ๋ค.[4]
- ๋ธ๋ผ์ฐ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํด์ํด์ ํ์ผ์ ๊ธฐ์ ๋ ๋ฐฉ์๋๋ก ์๋ฒ์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค.
- ์๋ฒ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์๋ต์ผ๋ก ๋๋๋ ค์ค๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ์์ ํ ๋ฐ์ดํฐ๋ฅผ ํด์ํ์ฌ ํ ํ๋ฆฟ์ ์ ์ ํ ์์น์ ์ฝ์ ํ๋ค. ๋ฐ์ดํฐ์ ๊ฐ๊ณต ๋ฐฉ์์ ๋ฐ๋ผ ์ฝ์ ์ธ์ ์์ (๋ณ๊ฒฝ, ์ญ์ )์ ํ ์๋ ์๋ค.
2.4. ๋จ์ [ํธ์ง]
Ajax ๋ ๋์ ํ์ด์ง ๋ ๋๋ง์ ํ๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํด์ํ์ง ๋ชปํ๋ ๊ฒ์ ์์ง์์๋ ๋ด์ฉ์ด ๊ฒ์๋์ง ์๋๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค.[5] ์ผ๋จ ๊ตฌ๊ธ์ Ajax ๊ธฐ๋ฐ์ ์น ์ฌ์ดํธ๋ ์ฝ์ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ์ด์์์ด ๋๋ฌด ๋ณต์กํ ์ฌ์ดํธ๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ๋๋งํ๋ ๋ฐ ํ๊ฒจ์ํ ์๋ ์๋ค. ๋๋ ์์ฃผ ์ ์ํ๊ฒ ์ฒซ ํ๋ฉด์ ๋ณด์ฌ ์ค ํ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ Ajax๋ ์ต์ ๋ ๋ฒ์ ๋ฐ์ดํฐ ์์ฒญ(์ผ๋ฐ์ ์ผ๋ก 4ํ ์ด์. HTML, CSS, JS ๋ก๋ฉ ํ Ajax call 1ํ)์ ํด์ผ ํ๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค.(์๋ ์ ํ๊ฐ ํ์ฐ์ ์ผ๋ก ๋ฐ์ํ๋ค.) ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์๋์ ์ผ๋ก ์ ๋ฐฉ์ ๊ทธ๋๋ก ์๋ฒ๊ฐ ๋ชจ๋ ํ์ด์ง๋ฅผ ๊ทธ๋ ค์ ์ ๋ฌํ๋ค. '์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง'์ด๋ผ๋ ์๋ก์ด ํฌ์ฅ(?)์ ๋๋ฅด๊ณ ์๋๋ฐ ๊ฒฐ๊ตญ ์ ๊ธฐ์ ์ ํ๋์ ์ฌํด์์ด๋ค.
JavaScript๋ฅผ ๋ฐ๋์ ์จ์ผ ํ๋ค. ์น ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅํ '์ธ์ด'๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋จ ํ๋๋ฟ์ด๋ค. ๋ฐ๋ผ์ ๋ธ๋ผ์ฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊บผ ๋ฒ๋ฆฌ๋ฉด Ajax ๊ธฐ๋ฐ ์ฌ์ดํธ๋ ํ๋ฉด์ ์ผ๋ถ๋ง ๊ทธ๋ ค์ง๋ค. ํนํ ์ธ๋ชจ ์๋ ์ ๋ณด๋ ์ ํ ์๋ ํ๋ฉด์ด ๊ทธ๋ ค์ง๋ค. ์คํฌ๋ฆฝํ ๊ธฐ๋ฅ์ด ์ ํ๋๋ ํน์ ๋ชฉ์ ๊ธฐ๊ธฐ์์๋ ์ด๊ฒ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค. ์๋ฅผ ๋ค์ด ๋์งํธ ์ก์ ๊ฐ์ ์ด์ ์ฑ๋ฅ ์๋ฒ ๋๋ ๊ธฐ๊ธฐ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋๋ฆด ์ฌ๊ฑด์ด ์ ๋ ์๋ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ์ด์์์ด ๋๋ฌด ๋ณต์กํ ์ฌ์ดํธ๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ๋๋งํ๋ ๋ฐ ํ๊ฒจ์ํ ์๋ ์๋ค. ๋๋ ์์ฃผ ์ ์ํ๊ฒ ์ฒซ ํ๋ฉด์ ๋ณด์ฌ ์ค ํ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ Ajax๋ ์ต์ ๋ ๋ฒ์ ๋ฐ์ดํฐ ์์ฒญ(์ผ๋ฐ์ ์ผ๋ก 4ํ ์ด์. HTML, CSS, JS ๋ก๋ฉ ํ Ajax call 1ํ)์ ํด์ผ ํ๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค.(์๋ ์ ํ๊ฐ ํ์ฐ์ ์ผ๋ก ๋ฐ์ํ๋ค.) ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์๋์ ์ผ๋ก ์ ๋ฐฉ์ ๊ทธ๋๋ก ์๋ฒ๊ฐ ๋ชจ๋ ํ์ด์ง๋ฅผ ๊ทธ๋ ค์ ์ ๋ฌํ๋ค. '์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง'์ด๋ผ๋ ์๋ก์ด ํฌ์ฅ(?)์ ๋๋ฅด๊ณ ์๋๋ฐ ๊ฒฐ๊ตญ ์ ๊ธฐ์ ์ ํ๋์ ์ฌํด์์ด๋ค.
JavaScript๋ฅผ ๋ฐ๋์ ์จ์ผ ํ๋ค. ์น ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅํ '์ธ์ด'๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋จ ํ๋๋ฟ์ด๋ค. ๋ฐ๋ผ์ ๋ธ๋ผ์ฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊บผ ๋ฒ๋ฆฌ๋ฉด Ajax ๊ธฐ๋ฐ ์ฌ์ดํธ๋ ํ๋ฉด์ ์ผ๋ถ๋ง ๊ทธ๋ ค์ง๋ค. ํนํ ์ธ๋ชจ ์๋ ์ ๋ณด๋ ์ ํ ์๋ ํ๋ฉด์ด ๊ทธ๋ ค์ง๋ค. ์คํฌ๋ฆฝํ ๊ธฐ๋ฅ์ด ์ ํ๋๋ ํน์ ๋ชฉ์ ๊ธฐ๊ธฐ์์๋ ์ด๊ฒ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค. ์๋ฅผ ๋ค์ด ๋์งํธ ์ก์ ๊ฐ์ ์ด์ ์ฑ๋ฅ ์๋ฒ ๋๋ ๊ธฐ๊ธฐ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋๋ฆด ์ฌ๊ฑด์ด ์ ๋ ์๋ ์๋ค.
2.5. ์์ [ํธ์ง]
์๋์ ์์ ์์๋ ๋ชจ๋ "//namu.wiki/raw/ํ:ํ%20๋ชจ์/" ์ ๋ด์ฉ์ ๊ฐ์ ธ์์ ๋ฟ๋ ค์ฃผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ด๋ค.
2.5.1. Pure Javascript[ํธ์ง]
ํ๋ฌ๊ทธ์ธ ์์ด, ์๋ฐ์คํฌ๋ฆฝํธ๋ง์ ์ฌ์ฉํ ์์ ์ด๋ค.
XMLHttpRequest๋ฅผ ์ฌ์ฉํ ์์
Fetch API ์ฌ์ฉ ์์
XMLHttpRequest๋ฅผ ์ฌ์ฉํ ์์
<html>
<head>
<script type="text/javascript">
var request = new XMLHttpRequest(); // XMLHttpRequest ์์ฑ
request.open("GET", "//namu.wiki/raw/ํ:ํ%20๋ชจ์/"); // ๋ฐ์ดํฐ๋ฅผ GET Method๋ก ์์ฒญ
request.onreadystatechange = function() {
if ( request.readyState === 4 && request.status === 200 ) { // request๊ฐ ๋๋ฌ์ผ๋ฉฐ(4), ์ฑ๊ณต์ (200)์ธ ๊ฒฝ์ฐ.
document.getElementById("content").innerHTML = resquest.responseText; // #content ํ๊ทธ ๋ด์ ๋ด์ฉ์ ๋ฐ์์จ ํ
์คํธ๋ก ๊ต์ฒด.
}
}
</script>
</head>
<body>
<div id="content"></div>
</body>
</html>Fetch API ์ฌ์ฉ ์์
<html>
<head>
<script type="text/javascript">
fetch("//namu.wiki/raw/ํ:ํ%20๋ชจ์/") // fetch API๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฒญ
.then((response) => {
if (response.ok) { // HTTP Status๊ฐ ์ฑ๊ณต์ ์ธ (200 ๋ฑ) ๊ฒฝ์ฐ
return response.text(); // Response Body๋ฅผ text๋ก ๊บผ๋ด์ด
}
}).then((text) => {
document.getElementById("content").innerHTML = text; // #content ํ๊ทธ ๋ด์ ๋ด์ฉ์ ๋ฐ์์จ ํ
์คํธ๋ก ๊ต์ฒด.
});
</script>
</head>
<body>
<div id="content"></div>
</body>
</html>2.5.2. jQuery[ํธ์ง]
jQuery๋ฅผ ์ด์ฉํ ์์ ์ด๋ค. $.ajax ํจ์๋ฅผ ์ด์ฉํด์ ์์ฒด์ ์ธ AJAX๋ฅผ ์ง์ํด์ฃผ๊ธฐ ๋๋ฌธ์, ๊ธฐ๋ณธ์ ์ธ ์ค์ ๊ณผ ์ฝ๋ฐฑ ํจ์๋ง ๋ฃ์ด์ฃผ๋ฉด ๊ฐ๋จํ ์๋๋๋ค.
<html>
<head>
<script type="text/javascript">
$.ajax({
url: "//namu.wiki/raw/ํ:ํ%20๋ชจ์/",
method: "GET",
dataType: "text",
success: function(data) {
$("#content").html(data);
}
})
</script>
</head>
<body>
<div id="content"></div>
</body>
</html>2.6. ๋์ฒด/๋ณด์ ๊ธฐ์ [ํธ์ง]
Ajax ๋ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์ ์ก ๊ธฐ์ ์ด์ง๋ง '์๋ฐฉํฅ' ๊ธฐ์ ์ด ์๋๋ฉฐ ๋ํ '์์ฒญ-์๋ต' ์ฌ์ดํด์ด ์ง๋๊ณ ๋๋ฉด ํต์ ์์ผ์ ๋ซ์๋ฒ๋ฆฐ๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค. ๋ฐ๋ผ์ ์์ ํ ์ค์๊ฐ ํต์ ์ ์ง์ํ๊ธฐ ์ํด ์น ์์ผ์ด๋ผ๋ ์๋ก์ด ๊ธฐ์ ์ด ๊ตฌํ๋์๋ค. ์น ์์ผ์ ์์ฒญ-์๋ต ์ฌ์ดํด์ด ์ง๋๋ ํต์ ์์ผ์ ๋ซ์ง ์๊ณ ๊ณ์ํด์ ์์ฒญ์ ์ก์์ ํ ์ ์๋๋ก ๊ธฐ์กด์ HTTPํ๋กํ ์ฝ์ ์ฝ๊ฐ์ ๋ณํ์ ๊ฐํ๋ค.
์น ์์ผ์ด TCP์ ๊ธฐ๋ฐํ๊ณ ์์ด ๋๊ท๋ชจ ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์ก์ ์ ํฉํ์ง ์๊ธฐ ๋๋ฌธ์ UDP์ ๊ธฐ๋ฐํ WebRTC๋ผ๋ ๊ธฐ์ ์ด ๊ตฌํ๋์๋ค. WebRTC๋ ์ฌ๊ธฐ์ ํ ๋ฐ ๋ ๋์๊ฐ ์๋ฒ์ ์ค๊ฐ๋ฅผ ํ์๋ก ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ P2P ํต์ ์ฑ๋์ ํ์ฑํ๋ ๊ธฐ๋ฅ๋ ๊ฐ์ง๊ณ ์๋ค.
Ajax ๊ธฐ์ ์์์ ๊ตฌํ๋ ์ค์๊ฐ ํต์ ๊ธฐ์ ๋ก Long polling ๊ธฐ์ ์ด ์๋ค. Long polling ์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ์ฆ์ ์๋ต์ ์ฃผ๋ ๊ฒ ์๋๋ผ ์๋ก์ด ์ ๋ณด๊ฐ ๊ฐฑ์ ๋ ๋๊น์ง ์์ผ์ ์ด์ด๋ ์ฑ ์๋ต์ ๋ฏธ๋ฃฌ๋ค. ๊ทธ๋ฌ๋ค ์๋ก์ด ์ ๋ณด๊ฐ ๋ค์ด์ค๋ฉด ๊ทธ ๋ ์ด๋ ค ์๋ ์์ผ์ ํตํด ์๋ต์ ๋๋ ค์ฃผ๋ฉฐ ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ )๋ ์๋ต์ ๋ฐ๋ ์ฆ์ ์๋ก์ด ์์ฒญ์ ์๋ฒ์ ๋ ๋ฆฐ๋ค. ์ด๋ ๊ฒ ํด์ '์๋ตํ๋ฉด ํต์ ์ฑ๋์ด ๋ซํ๋' ๋ฌธ์ ๋ฅผ ์ฐํํ๋ค. Socket.io ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์น ์์ผ ๋์ฒด ๋ชจ๋๊ฐ ์ด Long polling ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. ์น ์์ผ์ด ์ง์๋์ง ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ์ง๋๋ฉด Socket.io๋ ์ด Long polling ๋ฐฉ์์ผ๋ก ํต์ ๋ฐฉ์์ ๋ฐ๊พผ๋ค.
Polling ๊ณผ Long polling ์ ์ฐจ์ด์ ์, Polling์ ๊ฐฑ์ ๋ ์ ๋ณด๊ฐ ์์ผ๋ฉด ์๋ฒ๊ฐ '๊ฐฑ์ ๋ ์ ๋ณด ์์'์ด๋ผ๋ ์๋ต์ ์ฆ์ ๋๋ ค์ฃผ์ง๋ง Long polling์ ๊ฐฑ์ ๋ ์ ๋ณด๊ฐ ์์ ๊ฒฝ์ฐ ์ฌ์ ์ ์ฝ์ํ ์๊ฐ(์ ์ด์์ ์์ญ์ด)๊น์ง ๊ธฐ๋ค๋ ค๋ณด๊ณ ๊ทธ๋๋ ๊ฐฑ์ ๋ ์ ๋ณด๊ฐ ๋ค์ด์ค์ง ์์ผ๋ฉด '๊ฐฑ์ ๋ ์ ๋ณด ์์'์ด๋ผ๋ ์๋ต์ ๋๋ ค์ค๋ค.[6] ๋ฌผ๋ก ์์ฒญ์ ๋ฐ์ ์์ ์ ๊ฐฑ์ ๋ ์ ๋ณด๊ฐ ์๊ฑฐ๋ ๊ธฐ๋ค๋ฆฌ๋ ๋์ค์ ์๋ก์ด ์ ๋ณด๊ฐ ๋ค์ด์ค๋ฉด ๊ทธ ์ฆ์ ๊ฐฑ์ ๋ ์ ๋ณด๋ฅผ ์๋ต์ผ๋ก ๋๋ ค์ค๋ค. ์์ฒญ์(๋ธ๋ผ์ฐ์ ) ์ ์ฅ์์์ Long polling ์ 'ํน์ ์๊ฐ ๊ฐ๊ฒฉ'์ผ๋ก ์์ฒญ์ ๋ณด๋ด๋ ๋์ '์๋ฒ์์ ์๋ต์ด ๋์์ค๋ ์ฆ์' ์๋ก์ด ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ผ๋ก ๋ฐ๋๋ค.
์น ์์ผ์ด TCP์ ๊ธฐ๋ฐํ๊ณ ์์ด ๋๊ท๋ชจ ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์ก์ ์ ํฉํ์ง ์๊ธฐ ๋๋ฌธ์ UDP์ ๊ธฐ๋ฐํ WebRTC๋ผ๋ ๊ธฐ์ ์ด ๊ตฌํ๋์๋ค. WebRTC๋ ์ฌ๊ธฐ์ ํ ๋ฐ ๋ ๋์๊ฐ ์๋ฒ์ ์ค๊ฐ๋ฅผ ํ์๋ก ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ P2P ํต์ ์ฑ๋์ ํ์ฑํ๋ ๊ธฐ๋ฅ๋ ๊ฐ์ง๊ณ ์๋ค.
Ajax ๊ธฐ์ ์์์ ๊ตฌํ๋ ์ค์๊ฐ ํต์ ๊ธฐ์ ๋ก Long polling ๊ธฐ์ ์ด ์๋ค. Long polling ์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ์ฆ์ ์๋ต์ ์ฃผ๋ ๊ฒ ์๋๋ผ ์๋ก์ด ์ ๋ณด๊ฐ ๊ฐฑ์ ๋ ๋๊น์ง ์์ผ์ ์ด์ด๋ ์ฑ ์๋ต์ ๋ฏธ๋ฃฌ๋ค. ๊ทธ๋ฌ๋ค ์๋ก์ด ์ ๋ณด๊ฐ ๋ค์ด์ค๋ฉด ๊ทธ ๋ ์ด๋ ค ์๋ ์์ผ์ ํตํด ์๋ต์ ๋๋ ค์ฃผ๋ฉฐ ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ )๋ ์๋ต์ ๋ฐ๋ ์ฆ์ ์๋ก์ด ์์ฒญ์ ์๋ฒ์ ๋ ๋ฆฐ๋ค. ์ด๋ ๊ฒ ํด์ '์๋ตํ๋ฉด ํต์ ์ฑ๋์ด ๋ซํ๋' ๋ฌธ์ ๋ฅผ ์ฐํํ๋ค. Socket.io ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์น ์์ผ ๋์ฒด ๋ชจ๋๊ฐ ์ด Long polling ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. ์น ์์ผ์ด ์ง์๋์ง ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ์ง๋๋ฉด Socket.io๋ ์ด Long polling ๋ฐฉ์์ผ๋ก ํต์ ๋ฐฉ์์ ๋ฐ๊พผ๋ค.
Polling ๊ณผ Long polling ์ ์ฐจ์ด์ ์, Polling์ ๊ฐฑ์ ๋ ์ ๋ณด๊ฐ ์์ผ๋ฉด ์๋ฒ๊ฐ '๊ฐฑ์ ๋ ์ ๋ณด ์์'์ด๋ผ๋ ์๋ต์ ์ฆ์ ๋๋ ค์ฃผ์ง๋ง Long polling์ ๊ฐฑ์ ๋ ์ ๋ณด๊ฐ ์์ ๊ฒฝ์ฐ ์ฌ์ ์ ์ฝ์ํ ์๊ฐ(์ ์ด์์ ์์ญ์ด)๊น์ง ๊ธฐ๋ค๋ ค๋ณด๊ณ ๊ทธ๋๋ ๊ฐฑ์ ๋ ์ ๋ณด๊ฐ ๋ค์ด์ค์ง ์์ผ๋ฉด '๊ฐฑ์ ๋ ์ ๋ณด ์์'์ด๋ผ๋ ์๋ต์ ๋๋ ค์ค๋ค.[6] ๋ฌผ๋ก ์์ฒญ์ ๋ฐ์ ์์ ์ ๊ฐฑ์ ๋ ์ ๋ณด๊ฐ ์๊ฑฐ๋ ๊ธฐ๋ค๋ฆฌ๋ ๋์ค์ ์๋ก์ด ์ ๋ณด๊ฐ ๋ค์ด์ค๋ฉด ๊ทธ ์ฆ์ ๊ฐฑ์ ๋ ์ ๋ณด๋ฅผ ์๋ต์ผ๋ก ๋๋ ค์ค๋ค. ์์ฒญ์(๋ธ๋ผ์ฐ์ ) ์ ์ฅ์์์ Long polling ์ 'ํน์ ์๊ฐ ๊ฐ๊ฒฉ'์ผ๋ก ์์ฒญ์ ๋ณด๋ด๋ ๋์ '์๋ฒ์์ ์๋ต์ด ๋์์ค๋ ์ฆ์' ์๋ก์ด ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ผ๋ก ๋ฐ๋๋ค.
3. ์ฝ๋๋ฏธ์ ์ํ ๊ฒ์[ํธ์ง]
A-JAX ํญ๋ชฉ ์ฐธ๊ณ .
4. ์๊ตญ๊ตฐ ์ฐจ๊ธฐ ๋ค๋ชฉ์ ์ฅ๊ฐ์ฐจ[ํธ์ง]
์ค์นด์ฐํธ SV ํญ๋ชฉ ์ฐธ๊ณ .
5. ํ๊ตญ์ ๋จ์ฑ ์์ด๋ ๊ทธ๋ฃน[ํธ์ง]
์์ด์ ์ค ๋ฌธ์ ์ฐธ๊ณ .
[1] ์ฌ์ค ์ด๋ ํ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ ์ ๋ฌ๋ฐ์ ์ ์๋ค. ํ
์คํธ ๋ฐ์ดํฐ๊ฐ ์๋ ๋ฐ์ดํฐ๋ Ajax๋ก ๋ณด๋ผ ์ ์๋ค.
[2] ์ง๊ธ ์ฐ๋ฆฌ๊ฐ ์ฐ๊ณ ์๋ Ajax์ ๋ฌ๋ผ์ง๊ฒ ์๋ค.
[3] ๋น์ IE๋ ์ด๊ฑธ๋ก ๊ตฌํํ๋ฉด ๋ฑ๋ฑ ์๋ฆฌ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ๊ฐ์ ๋ถํธํจ์ ์คฌ๋ค.
[4] ์ ํํ๋ ์์์ ์์ ๋ฐ์ ํ
ํ๋ฆฟ HTMLํ์ผ ์์ ์ด ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์ถ๊ฐ๋ก ์์ฒญํ๋ผ๋ ์ง์๊ฐ ์ ํ ์์ผ๋ฉฐ ๋ธ๋ผ์ฐ์ ๋ ์ด ์ง์์ ๋ฐ๋ผ ์๋ฒ์ ํด๋น ํ์ผ์ ์์ฒญํ๋ค.
[6] ํต์ ์ด ๋์ด์ง ์ํ์ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ต๋ ๋๊ธฐ์๊ฐ์ด ์ ํด์ ธ ์๋ค. ์ด ์๊ฐ์ ์ด๊ณผํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์์ฒด์ ์ผ๋ก ํ์์์ ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค.