Skip to content

Files

Latest commit

b1669c9 ยท Jan 28, 2022

History

History
71 lines (48 loc) ยท 4.63 KB

socket.md

File metadata and controls

71 lines (48 loc) ยท 4.63 KB

๐Ÿ“ก Socket

HTTP review

Socket ํ†ต์‹ 

Socket vs. RestAPI

๐Ÿ“ก Http review

HTML ํŒŒ์ผ์„ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ๋กœ์จ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ†ต์‹ ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ์—๋Š” HTML ํŒŒ์ผ์„ ์ „์†กํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋‚˜ ํ˜„์žฌ๋Š” json, image ํŒŒ์ผ ๋“ฑ ๋˜ํ•œ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

Http ํ†ต์‹ ์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์‘๋‹ต์— ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ 

  • HTTP ํ†ต์‹ ์€ ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ, ์‘๋‹ต์„ ํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ์ด๋‹ค.
  • json, xml, image, html ๋“ฑ๋“ฑ ํŒŒ์ผ์„ ์ „์†กํ•œ๋‹ค.
  • ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด connetction์ด ๋Š์–ด์ง„๋‹ค. ํ•˜์ง€๋งŒ keep alive ์˜ต์…˜์œผ๋กœ ์ผ์ • ์‹œ๊ฐ„๋™์•ˆ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“ก Socket

์†Œ์ผ“ ํ†ต์‹ ์€ ๋‘ ํ”„๋กœ๊ทธ๋žจ์ด ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์–‘์ชฝ์— ์ƒ์„ฑ๋˜๋Š” ํ†ต์‹  ๋‹จ์ž์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ HTTP ํ†ต์‹ ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ด์ง€๋งŒ ์†Œ์ผ“ ํ†ต์‹ ์€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ง€๋Š” ํ†ต์‹ ์œผ๋กœ, ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋‘ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค. ์–‘๋ฐฉํ–ฅ ํ†ต์‹ .

์ด๋Ÿฐ ์žฅ์ ์œผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ์ด๋‚˜ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๋“ฑ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— connection์„ ์ž์ฃผ ๋งบ๊ณ  ๋Š๋Š” http ํ†ต์‹ ๋ณด๋‹ค ์†Œ์ผ“ ํ†ต์‹ ์ด ์ ํ•ฉํ•˜๋‹ค. ์†Œ์ผ“ ํ†ต์‹ ์€ http๋ณด๋‹ค ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ด ์†Œ๋ชจ๋œ๋‹ค.(์—ฐ๊ฒฐ์„ ๊ณ„์† ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ.)


๐Ÿ’ฌ RestAPI Vs. Socket

  1. ์ฑ„ํŒ…์•ฑ์„ ํ†ตํ•˜์—ฌ ๋ฉ”๋ฆฌ์™€ ์กด์ด ๋Œ€ํ™”๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค.
  2. ์กด - ์†ก์‹ ์ž, ๋ฉ”๋ฆฌ - ์ˆ˜์‹ ์ž
  3. ์„œ๋ฒ„ ์ชฝ db์—๋Š” ๋Œ€ํ™”์˜ ๋‚ด์šฉ์ด ์ €์žฅ๋œ๋‹ค.

RestAPI

rest

{
    method : post,
    user_id : "john",
    message_payload :{
        "hey mary!"
    }
}

rest API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ์„ ํ•˜๊ฒŒ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” ๋งŒ์•ฝ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ณผ์ •์—์„œ ๋ฉ”๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ john์ด ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€๋ฅผ ์•Œ์•„์ฐจ๋ฆด ๊ฒƒ์ธ์ง€์ด๋‹ค.

  • short polling
  • long polling

short polling์€ ๋ฉ”๋ฆฌ์˜ ์•ฑ์ด๋‚˜ ์กด์˜ ์•ฑ์ด get ๋ฐฉ์‹์„ ํ†ตํ•ด์„œ ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ์งง์€ ์‹œ๊ฐ„ ํ…€(ํƒ€์ด๋จธ)์„ ๊ฐ€์ง€๊ณ  ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ณ„์† ๋ฐ˜๋ณตํ•˜๋‹ค ๋ณด๋ฉด ๋ฉ”์‹œ์ง€๊ฐ€ ์ƒˆ๋กœ ์ˆ˜์‹ ๋˜๋ฉด ๋ฉ”๋ฆฌ์˜ ์•ฑ์—์„œ๋Š” message end-point๋กœ๋ถ€ํ„ฐ ์—…๋ฐ์ดํŠธ๋œ ์…‹์„ db๋กœ ๋ถ€ํ„ฐ ์š”์ฒญํ•˜๊ฒŒ ๋œ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด๋Ÿฐ ์‰ฌ์šด ๋ฐฉ๋ฒ•์˜ ์˜์กด์„ฑ ๋•Œ๋ฌธ์— ์ด์šฉํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์€ server, client ๋ชจ๋‘์—๊ฒŒ ์ข‹์ง€ ์•Š์€ ๋ฐฉ์‹์ด๋‹ค. ์™œ๋ƒํ•˜๋ฉด latency delay๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋งŒ์•ฝ ํƒ€์ด๋จธ๋ฅผ 5์ดˆ๋ฅผ ๋‘๋ฉด 5์ดˆ ๊ฐ„๊ฒฉ๋งˆ๋‹ค ๋ฉ”์‹œ์ง€ ๋”œ๋ ˆ์ด๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  http๋กœ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— request๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค server๋กœ ์š”์ฒญํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ๋•Œ๋ฌธ์— ์„œ๋ฒ„์— ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ด๋ฅผ ๊ฐœ์„ ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ long polling์ด ์žˆ๋‹ค. long polling์„ ์ด์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋งค x์ดˆ๋งˆ๋‹ค ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  delay๋ฅผ ์ค˜์„œ ๋งŒ์•ฝ ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€๊ฐ€ ์ˆ˜์‹ ๋  ๋•Œ๋งˆ๋‹ค request๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. short polling์— ๋น„ํ•ด์„œ ์ข‹์€ ๋ฐฉ์‹์ด์ง€๋งŒ ์ ์šฉ์‹œํ‚ค๊ธฐ์— ๋‹ค์†Œ ์–ด๋ ต๊ณ  ๋ฐฑ์—”๋“œ์—์„œ ๋” ๋งŽ์€ ์ž‘์—…์ด ์š”๊ตฌ๋œ๋‹ค.

์งง๊ฒŒ ๋งํ•ด์„œ restAPI๋Š” http ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ(๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ) ๋•Œ๋ฌธ์— server์—์„œ request๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์‹œ์ง€๊ฐ€ ์ƒˆ๋กœ ๋“ค์–ด์™€๋„ client์—๊ฒŒ ์•Œ๋ฆด ๋ฐฉ๋ฒ•์€ ์—†๊ณ  client๊ฐ€ get ์š”์ฒญ์„ server์—๊ฒŒ ์ง€์†์ ์œผ๋กœ ๋ณด๋‚ด์„œ ํ™•์ธํ•˜๋Š” ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

Websocket

socket

websocket ํ†ต์‹ ์€ ์ดˆ๊ธฐ์— ์—ฐ๊ฒฐ์ด ์„ฑ๋ฆฝ๋๋‹ค๋Š” ๊ฒƒ์„ client๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค. ๋งŒ์•ฝ ์กด์ด ๋ฉ”๋ฆฌ์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ฒŒ๋˜๋ฉด ๋ฉ”๋ฆฌ ์ธก์—์„œ๋Š” ์ง€์†์ ์œผ๋กœ request๋ฅผ ๋ณด๋‚ผ ํ•„์š”๊ฐ€ ์—†์ด server์— ๋ฉ”๋ฆฌ์—๊ฒŒ ์†ก์‹ ๋œ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์œผ๋ฉด ์ฆ‰์‹œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฉ”๋ฆฌ์—๊ฒŒ ์ „๋‹ฌํ•˜๊ฒŒ๋œ๋‹ค. ์ฆ‰ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค. ์ด์ฒ˜๋Ÿผ websocket ํ†ต์‹ ์„ ์ด์šฉํ•˜๋ฉด end to end๊ฐ€ ์—ฐ๊ฒฐ๋œ ํ†ต์‹ ์„ ํ•˜๊ฒŒ๋˜์–ด ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ž„๊ณผ ๋™์‹œ์— http๋ฅผ ํ†ตํ•ด ์†ก์ˆ˜์‹  ํ• ๋•Œ๋ณด๋‹ค ์›ํ• ํ•˜๊ฒŒ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.




๐Ÿ“š ์ฐธ๊ณ 

httpํ†ต์‹ ๊ณผ socketํ†ต์‹ 

RestApiVs.Socket youtube



โ‰๏ธ QnA

  1. httpํ†ต์‹ ๊ณผ socket ํ†ต์‹ ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  1. RestAPI๊ณผ Websocket์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์„ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.