Skip to content
LeeMir edited this page Nov 26, 2021 · 1 revision

์˜ค๋Š˜์˜ TMI

๋ฏผ์ง€: ๋Šฆ๊ฒŒ ์ž 

๋ช…์žฌ: ์ฝ”๋กœ๋‚˜ 4์ฒœ๋ช…์ด๋ผ ๋ฌด์„œ์›Œ์„œ ์ฝ”๋…ธ์— ๋ชป๊ฐ€๊ฒ ์Œ

์ˆ˜์šฉ: ์‚ฌ์ง„ ์ฐ๋Š” ๊ฑธ ์ข‹์•„ํ•ด์„œ ํ•„๋ฆ„ ์นด๋ฉ”๋ผ ๋‘์„ธ๊ฐœ ์žฅ์‹์šฉ์œผ๋กœ ๋ชจ์…”๋‘๋Š” ์ค‘

์›์ฃผ: !? ํ”„๋กœ์ ํŠธ ๋ฐœํ‘œ ํŽ˜์ด์ง€์— ์šฐ๋ฆฌ ํŒ€ ์นด๋“œ๊ฐ€ ์—†์–ด์ง

์•ˆ๊ฑด

๊ตฌํ˜„ ์Šคํฌ๋ฆฐ์ƒท ๋ณด์‹œ๋ฉด ์ˆ˜์ •์ค‘์ผ ๋•Œ xx๋‹˜์ด ์ˆ˜์ •์ค‘์ž…๋‹ˆ๋‹ค.๋ผ๋Š” ๋ฌธ๊ตฌ๋กœ ๋ณ€๊ฒฝ๋˜๊ฒŒ ํ–ˆ๋Š”๋ฐ ์ด๊ฑด ์ข€ ๋œ ์˜ˆ์œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ๊ฐ€์ ธ์™€์„œ ์“ธ ์ˆ˜ ์žˆ๋‚˜ ํ™•์ธํ•˜๋ ค๊ณ  ํ•ด๋ณธ๊ฑฐ๊ธดํ•œ๋ฐ ์–˜๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ง€ ๊ณ ๋ฏผ์ž…๋‹ˆ๋‹ค!

  • ์ง€๊ธˆ ์œ ์ง€ํ•˜๊ณ  ๋” ์ข‹์€ ์•„์ด๋””์–ด ์ƒ๊ฐ๋‚˜๋ฉด ์ˆ˜์ •

์œ ์ €๊ฐ€ ํŒ€์— ์†Œ์†๋˜์–ด ์žˆ๋Š”์ง€์™€ ๊ฐ™์€ ๊ฒ€์‚ฌ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ํ•˜๊ฒŒ๋˜๋ฉด (ex ํŒ€์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ - ํŒ€์— ์†Œ์†๋˜์—ˆ๋Š”์ง€ ํ™•์ธ - ๊ฐ™์€ ์ด๋ฆ„์ด ์žˆ๋Š”์ง€ ํ™•์ธ - ์‹ค์ œ ์‹คํ–‰) ์„ฑ๋Šฅ์ด ์—„์ฒญ ์•ˆ์ข‹์•„์ง€์ง€ ์•Š์„๊นŒ ์‹ถ์€๋ฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ๋ ๊นŒ์š”?

  • ๋‹ค ํ•˜๋‚˜ํ•˜๋‚˜ ํ™•์ธ์€ ์•ˆํ•˜๊ณ  ์ค‘๊ฐ„์— ๊ฑธ๋ฆฌ๋ฉด 404 ๋งˆ์ง€๋ง‰์— catch err์—์„œ๋Š” 409

๋ชฉ๋ก์— ์žˆ๋Š” ๋ช‡์ดˆ์ „ ์ด๋Ÿฐ ์‹œ๊ฐ„์ด ์—…๋ฐ์ดํŠธ๊ฐ€ ์•ˆ๋ฉ๋‹ˆ๋‹ค -> ์ผ์ •์— ์‹ค์‹œ๊ฐ„ ๋ฐ”์ฒ˜๋Ÿผ setinterval ๊ฐ™์€๊ฑธ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™์€๋ฐ ์ผ๋‹จ ๋‹ค๋ฅธ๊ฒŒ ๋ฌธ์ œ๋ผ ํŒจ์Šค

  • ์‹œ๊ฐ„๋งŒ ์จ๋†“์ž
  • ์˜ค๋Š˜์ด๋ฉด ์‹œ๊ฐ„๋งŒ
  • ์—Š๊ทธ์ œ๋ฉด MM์›” DD์ผ
  • ์ž‘๋…„ ์ด์ „์ด๋ฉด YYYY. MM. DD

์ฑ„ํŒ…์—์„œ nav๋ฐ”์—์„œ ํŒ€ ์ด๋™ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.. ์ด๊ฑธ๋กœ ๋ช‡์‹œ๊ฐ„์งธ ์‚ฝ์งˆ ์ค‘์ž…๋‹ˆ๋‹ค..์•„์ง๋„ ํ•ด๊ฒฐ์ด ์•ˆ๋๋„ค์š” ๋ง˜๊ฐ™์•„์„  nav๋ฐ”์— ํŒ€์„ ํƒ ์—†์• ๋ฒ„๋ฆฌ๊ณ  ์‹ถ๋„ค์š”..^^!!ใ… ใ…กใ… 

  • selector => atom์œผ๋กœ

๋งŒ์•ฝ ํ•˜๋‚˜์˜ ์œ ์ €๊ฐ€ ์—ฌ๋Ÿฌ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋“ค์–ด์˜ค๋ฉด ์ฑ„ํŒ…๋ฐฉ ์ดˆ๋Œ€๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ์ดˆ๋Œ€ refresh๊ฐ€ ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ์œ ์ €์—๊ฒŒ๋งŒ ๊ฐˆ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.. ์•„๋ฌด๋„ ๋ชฐ๋ž์œผ๋ฉด ์ข‹๊ฒ ์–ด์š”

  • {์†Œ์ผ“id : ํŒ€id, ์œ ์ €id, socket}

  • {์†Œ์ผ“id2 : ํŒ€id, ์œ ์ €id, socket2}

  • export const onlineUsersByTeam = {};

  • export const onlineUsersInfo = {};

  • ์†Œ์ผ“ ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์‹œ, store์—์„œ ํ•ด๋‹น ์œ ์ €id์˜ ๋‹ค๋ฅธ ์†Œ์ผ“ id๊ฐ€ ์กด์žฌํ•˜๋Š” ์ง€ ํ™•์ธ ํ›„ online ์—ฌ๋ถ€ ํŒ๋‹จํ•˜๋„๋ก ๋ฆฌํŒฉํ† ๋ง

์˜ค๋Š˜ ํ•  ์ผ

ํŒ€ ๋ณด๋“œ

  • ์†Œ์บฃ ์„ฑ๋Šฅ ๊ฐœ์„ 

ํŒ€ ์ฑ„ํŒ…

๊ธฐ์ˆ ๊ณต์œ 

ํŒ€ ๋ณด๋“œ ๊ฐœ๋ฐœ๊ธฐ (konva, socket)

Konva

  • HTML5 2d canvas js library
  • react-konva is a JavaScript library for drawing complex canvas graphics using React.
  • draggable = boolean

socket

  • ๊ฒฝ์Ÿ์กฐ๊ฑด
    • postit.whoIsDragging = user.id(-1์ด๋ฉด ์•„๋ฌด๋„ ์•ˆ์ง‘๊ณ  ์žˆ๋Š”๊ฑฐ)
    • postit.whoIsUpdating = user.id
  • ์„ฑ๋Šฅ ๊ฐœ์„  (throttling)

chatRooms

{
    1: {
        chatRoomId: 1,
        chatRoomName: '1๋ฒˆ๋ฐฉ',
        lastMessage: {
            messageId, content ..
        }
    
    }
    
    2: {
    
    }
    
    3: {
    
    }

}

lastMessages { 1: { message

}

}

์ผ์ •

์ผ์ •์— ํ•œ๊ธ€ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ ์ผ์ • ์ˆ˜์ • ๋ถˆ๊ฐ€๋Šฅ ์ผ์ • ์‚ญ์ œ์‹œ, ๊ถŒํ•œ์—†์Œ toast message

์ฑ„ํŒ…๋ฐฉ

  1. ์ฑ„ํŒ…๋ฐฉ ์ด๋ฆ„ ํ•œ๊ธ€๋กœ ๋ณ€๊ฒฝ ์•ˆ๋จ
  2. ์ฑ„ํŒ…๋ฐฉ ํ‡ด์žฅ์‹œ
    1. ์ฆ‰๊ฐ ๋ฐ˜์˜ ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ ์žˆ์Œ
  3. ์ฑ„ํŒ…๋ฐฉ ์ดˆ๋Œ€์‹œ
    1. ์ดˆ๋Œ€๋ฐ›๋Š” ์‚ฌ๋žŒํ•œํ…Œ ๋ฐ˜์˜ ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ
    2. ๊ธฐ์กด ๋งด๋ฒ„ํ•œํ…Œ ๋ฐ˜์˜ ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ
  4. ์ฑ„ํŒ…๋ฐฉ ์œ ์ € ์ธ๋„ค์ผ ์ปฌ๋Ÿฌ๋ฐ˜์˜ ์•ˆ ๋จ
    1. ๋ชฉ๋ก์—๋Š” ์ •์ƒ ๋ฐ˜์˜
    2. ์ฑ„ํŒ… ๋ณด๋“œ์—๋Š” ๋น„์ •์ƒ ๋ฐ˜์˜
  5. ํŒ€๊ด€๋ฆฌ ๊ถŒํ•œ ๋ณ€๊ฒฝ ๋‹ค ์ž˜ ๋˜๋Š”๋ฐ ์›์ฃผ๋‹˜์„ ๊ตฌ์„ฑ์›์—์„œ ๊ด€๋ฆฌ์ž๋กœ ์˜ฌ๋ฆฌ๋Š”๊ฒŒ 403์—๋Ÿฌ
    • (์‹ค์ œ๋กœ๋Š” ์ ์šฉ๋˜๊ณ  ๊ด€๋ฆฌ์ž์—์„œ ๊ตฌ์„ฑ์› ๋‚ด๋ฆฌ๋Š”๊ฑด ์ž˜ ๋จ)
  6. ์ผ์ • ์ˆ˜์ • (๋กœ์ปฌ์—์„œ๋Š” ์ž˜ ๋จ)
    • ๋ฐฐํฌ ์ ์šฉ ์•ˆ๋œ๋“ฏ?

๊ณ„์ • ์˜ค๋ฅ˜

  1. ๋กœ๊ทธ์•„์›ƒ์ด ์ž˜ ์•ˆ๋  ๋•Œ๊ฐ€ ์žˆ์Œ

๋ฐ๋ชจ - ์ง€๊ธˆ ํ•˜์‹ค๊นŒ์š”? ๊ธฐ์ˆ ๋ฐœํ‘œ - PPT ๋งŒ๋“ค๊ธฐ

ํŒ€๋…ธ์…˜ - ๋‚˜์ค‘์—

์ง€๋‚œ ์Šคํ”„๋ฆฐํŠธ ๊ฐœ๋ฐœ ์‚ฌํ•ญ์„ ๊ฐ„๋žตํžˆ ์„ค๋ช…๋“œ๋ฆฌ์ž๋ฉด,

๋กœ๊ทธ์ธ

  • passport ์ด์šฉ ๋กœ์ปฌ ๋กœ๊ทธ์ธ, ๊นƒํ—ˆ๋ธŒ ๋กœ๊ทธ์ธ
  • ๋กœ์ปฌ ๋กœ๊ทธ์ธ์€ Bcrypt + AES๋ฅผ ์ด์šฉํ•ด์„œ ์•”ํ˜ธํ™”,

ํŒ€ ์ผ์ •

  • ํŽ˜์ด์ง€ ์ž…์žฅํ•˜๋ฉด ์ผ์ • ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  • ์ผ์ • ์ƒ์„ฑ
    • ์ผ์ • ๋ฐ˜๋ณต ๋“ฑ๋ก
  • ์ผ์ • ์ˆ˜์ •
  • ์ผ์ • ์‚ญ์ œ
  • ์ฃผ๊ฐ„, ์›”๊ฐ„ ์ „ํ™˜

ํŒ€ ๊ด€๋ฆฌ

  • ํŒ€ CR
  • ํŒ€ ๋‚˜๊ฐ€๊ธฐ
  • ํŒ€ ๊ด€๋ฆฌ์ž๋กœ์„œ
    • ํŒ€ ์ •๋ณด ์—…๋ฐ์ดํŠธ
    • ํŒ€ ์‚ญ์ œ
    • ํŒ€์› ๊ฐ•ํ‡ด
    • ํŒ€์› ์ดˆ๋Œ€

ํŒ€ ๋ณด๋“œ

  • ํฌ์ŠคํŠธ์ž‡ ์ƒ์„ฑ, ์ˆ˜์ •
  • ์†Œ์ผ“ ์—ฐ๊ฒฐ

์ด๋ฒˆ์ฃผ ์Šคํ”„๋ฆฐํŠธ ์ง„ํ–‰ ์‚ฌํ•ญ์€

์ „์ฒด์ ์œผ๋กœ๋Š”

  • DB ๊ตฌ์กฐ ๋ณ€๊ฒฝ
    • Postit, Message์ฒ˜๋Ÿผ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€๋™์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” Redis์—์„œ ๊ด€๋ฆฌ

ํŒ€ ๋ณด๋“œ

  • ํฌ์ŠคํŠธ์ž‡ ์‚ญ์ œ
  • UI ๊ฐœ์„  (ํฌ์ŠคํŠธ์ž‡ ์œ„์น˜)
  • ๋™์‹œ ์ ‘๊ทผ ๋ฐฉ์ง€(์ด๋™, ์ˆ˜์ •)
  • ์ผ๋ถ€ ์˜ค๋ฅ˜ ์ˆ˜์ •

ํŒ€ ๊ด€๋ฆฌ

  • ํŒ€์› ๊ถŒํ•œ ๋ณ€๊ฒฝ
  • ํŒ€ ์†Œ์†, ํŒ€ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ํ™•์ธ
  • ๋ฒ„๊ทธ fix

ํŒ€ ์ฑ„ํŒ…

  • ์ฑ„ํŒ… page์ž…์žฅํ•˜๋ฉด, ๋ณธ์ธ์ด ์†ํ•œ ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก์„ ๋ถˆ๋Ÿฌ์˜ด
  • ์ฑ„ํŒ…๋ฐฉ ๋งŒ๋“ค๊ธฐ
  • ์ฑ„ํŒ… ๊ธฐ๋Šฅ
  • ์ฑ„ํŒ…๋ฐฉ ์ดˆ๋Œ€
  • ์ฑ„ํŒ…๋ฐฉ ์œ ์ € ๋ชฉ๋ก ๋ณด๊ธฐ
  • ์ฑ„ํŒ…๋ฐฉ ๋‚˜๊ฐ€๊ธฐ
Clone this wiki locally