Skip to content
MoonDooo edited this page Mar 14, 2024 · 2 revisions

SoTalk ๐Ÿ’ฌ

๋„คํŠธ์›Œํฌ ํ•™๊ธฐ๋ง ๊ณผ์ œ: TCP ํ†ต์‹ , UDPํ†ต์‹ ๋“ฑ Socket์„ ์‚ฌ์šฉํ•œ ์ฑ„ํŒ…๊ธฐ๋Šฅ ๊ด€๋ จ ์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ :]

Duration: 2023.05.25 ~ 2023.06.12 ( 19 Days )

๐ŸŽฏ ํ”„๋กœ์ ํŠธ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ
  • ํ”„๋กœํ•„ ์ €์žฅ, ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ
  • ์ด๋ฏธ์ง€, ํŒŒ์ผ ์ „์†ก
  • ๊ทธ๋ฃน ์ด๋ฏธ์ง€ ์ €์žฅ ๋ฐ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ

๐Ÿ‘ฅ ํŒ€์› ์†Œ๊ฐœ

BE: ์ž„๊ฒฝ์™„ iOS: ์–‘์Šนํ˜„
@MoonDooo @SHcommit

๊ตฌํ˜„

์†Œ์ผ“ ์ €์žฅ

๋จผ์ € ์„œ๋ฒ„ ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜์—ฌ listening ์ƒํƒœ์—ฌ์•ผ๋งŒ ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์œผ๋กœ๋ถ€ํ„ฐ ์ฒดํŒ…์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ์Šค๋‹์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” while(true)์œผ๋กœ ์ž„์˜๋กœ ์‚ญ์ œํ•˜๊ธฐ ์ „๊นŒ์ง€ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค. ๋งŒ์•ฝ ๋‹จ์ผ ์“ฐ๋ ˆ๋“œ๋ผ๋ฉด ์ด๋Š” ์„œ๋ฒ„ ์šด์šฉ์ด ์–ด๋ ต๋‹ค. ๋•Œ๋ฌธ์— ์“ฐ๋ ˆ๋“œ ํ’€์„ ์ด์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ž์„ธํžˆ https://github.com/MoonDooo/socket/wiki/%EC%86%8C%EC%BC%93-%EC%83%9D%EC%84%B1

๊ทธ๋ฃน ์ฒดํŒ… ์ „์†ก

๊ณผ์ •

  1. /group/list ํ˜น์€ /search, /add๋กœ ๊ทธ๋ฃน ๊ฒ€์ƒ‰ ํ˜น์€ ์ถ”๊ฐ€ํ•œ๋‹ค.
  2. ์›ํ•˜๋Š” ๊ทธ๋ฃน์˜ id๋กœ /socket/port๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ํฌํŠธ๋ฅผ ๋ฐ˜ํ™˜ ๋ฐ›๋Š”๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ํฌํŠธ๋กœ ์†Œ์ผ“ ์—ฐ๊ฒฐ ๋ฐ ์„œ๋ฒ„ ์†Œ์ผ“์—์„œ accept
  4. ์„œ๋ฒ„๋Š” accept๋œ ์†Œ์ผ“์„ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ userId ์š”๊ตฌ ๋ฐ ๋กœ๊ทธ์ธ
  5. ๋กœ๊ทธ์ธ ์„ฑ๊ณต์‹œ 200๋ฐ˜ํ™˜ ๋ฐ ์ฒดํŒ… ์‹œ์ž‘
  6. ํ•ด๋‹น ์†Œ์ผ“์œผ๋กœ๋ถ€ํ„ฐ ์ฒดํŒ…์„ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น ์†Œ์ผ“์„ ๋ฐ›์€ ServerSocket๊ฐ€ acceptํ•œ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“๋“ค์„ ๊ฐ€์ ธ์™€ ์ „์†ก

์ž์„ธํžˆ : https://github.com/MoonDooo/socket/wiki/%EA%B7%B8%EB%A3%B9-%EC%B2%B4%ED%8C%85-%EC%A0%84%EC%86%A1

์ด๋ฏธ์ง€(ํŒŒ์ผ) ์ „์†ก

๋จผ์ € ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์ „์†กํ•œ๋‹ค๋ฉด ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ userId์™€ ๋ณด๋‚ด๊ณ ์ž ํ•˜๋Š” ๊ทธ๋ฃน์˜ id๋ฅผ ํ†ตํ•ด ๊ด€๋ จ ์†Œ์ผ“์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ group์˜ id๋Š” ์„œ๋ฒ„ ์†Œ์ผ“์„ user์˜ id๋Š” ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์„ ์ฐพ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋Š” FileStore๋ฅผ ํ†ตํ•ด ์ €์žฅ๋˜๋ฉฐ ํŒŒ์ผ๋ช…์€ UUID๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด UUID๋ฅผ group id์— ํ•ด๋‹นํ•˜๋Š” ServerSocket์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์„ ์ฐพ์•„ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์ž์„ธํžˆ : https://github.com/MoonDooo/socket/wiki/%EC%9D%B4%EB%AF%B8%EC%A7%80,-%ED%8C%8C%EC%9D%BC-%EC%A0%84%EC%86%A1

์ฒดํŒ…

image

์‹ค์ œ IOS์™€์˜ ํ†ต์‹ 

์ดํ›„ ๊ฐœ์„ ํ•ด์•ผํ•  ์ 

ํšŒ์› ๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์—๋Š” ์–ด๋– ํ•œ ๋ณด์•ˆ ์‚ฌํ•ญ์ด ์—†๋‹ค. ์ต๋ช… ์„œ๋น„์Šค์ด๊ธด ํ•˜์ง€๋งŒ ์ตœ์†Œํ•œ์˜ ๋ณด์•ˆ (๊ฐ€๋กœ์ฑ„๊ธฐ, ์œ„์žฅ ๋“ฑ)์€ ๊ฐ–์ถ”์–ด์•ผ ํ•œ๋‹ค. ์ด์— Spring Security๋ฅผ ํ•™์Šตํ•˜๊ณ  ์ดํ›„ ํ”„๋กœ์ ํŠธ์—๋Š” ๋ฐ˜๋“œ์‹œ ์ ์šฉํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค. ์•„์ง ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์ด ์ข‹์€ ์ฝ”๋“œ๋ผ๊ณ  ์ƒ๊ฐ๋˜์ง€ ์•Š๋Š”๋‹ค. ์†Œ์ผ“ ์„ธ์…˜ ํด๋ž˜์Šค๋Š” ๋ฆฌํŽ™ํ† ๋ง์„ ํ–ˆ์Œ์—๋„ ์•„์ง ๋งŽ์€ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋˜ํ•œ ๊ฐ€๋…์„ฑ์ด ํ•œ๋ˆˆ์— ๋ณด๊ธฐ ์–ด๋ ต๋‹ค. ์ฝ”๋“œ๋งˆ๋‹ค log๋ฅผ ์ฐ์œผ๋‹ˆ ์–ด๋–ค ๊ฒƒ์ด ํ•ต์‹ฌ ์ฝ”๋“œ์ธ์ง€ ๋ฐ”๋กœ ๋ˆˆ์— ๋“ค์–ด์˜ค์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ถ€๋ถ„์ด ๋งค์šฐ ๋ถ€์กฑํ•˜๋‹ค. ๋‹จ์ˆœํžˆ ๋ฐ›์•„์„œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋กœ ๋˜์ง€๋Š” ๊ฒƒ ์™ธ์—๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋–ค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€์™€ ๊ฐ™์€ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์„ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋“ค์€ ์•ž์œผ๋กœ ๋ฐ˜๋“œ์‹œ ๊ณต๋ถ€ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด๋‹ค.