Skip to content

Latest commit

Β 

History

History
59 lines (41 loc) Β· 2.54 KB

redux-saga-channel.md

File metadata and controls

59 lines (41 loc) Β· 2.54 KB

Redux Saga Channel

μΉ΄ν‚€μ˜€ν†‘μ—μ„œλŠ” μ±„νŒ…μ„ μ£Όκ³ λ°›μ„λ•Œ socket 이벀트λ₯Ό ν™œμš©ν•˜κ³  μžˆλ‹€. μ›λž˜λŠ” μ•„λž˜μ²˜λŸΌ λ”μ°ν•œ ν˜•νƒœλ‘œ socket 이벀트λ₯Ό μ •μ˜ν•œ νŒŒμΌμ—μ„œ λ”°λ‘œ κ΄€λ¦¬ν•˜κ³  μžˆμ—ˆλ‹€.

export const socket = socketOpen(configs.SOCKET_URL, {
  transports: ["webso

export const connect = () => {
  socket.on(Sockets.EventMap.connect, (msg: string) => {});
};

export const disconnect = () => {
  socket.on(Sockets.EventMap.disconnect, (msg: string) => {});
};

export const chatFromServer = (dispatch: Dispatch<any>) => {
  socket.on(Sockets.EventMap.chatFromServer, (newChat: ApiChat) => {});
};
export const afterLogin: AfterLogin = ({ uuid }) => {};

export const chatFromClient: ChatFromClient = ({
  roomUuid,
  content,
  createdAt,
  userUuid,
}) => {};

export const joinRooms: JoinRooms = ({ roomUuids }) => {};

μ‹œκ°„μ΄ 갈수둝 μ†ŒμΌ“κ΄€λ ¨ λ‘œμ§μ€ λ³΅μž‘ν•΄μ§€κ³  λ•Œλ‘œλŠ” redux 에 action 을 dispatch ν•˜κ±°λ‚˜ view λ‹¨μ—μ„œ 이벀트 쀑볡등둝을 막기 μœ„ν•΄ socket.removeEventListener λ₯Ό ν™œμš©ν•˜κΈ°λ„ ν–ˆμ—ˆλ‹€.

μ†ŒμΌ“ μ΄λ²€νŠΈλŠ” μ„œλ²„μ™€ ν”„λ‘ νŠΈ 어디에도 ν¬ν•¨λ˜μ§€ μ•ŠλŠ” μ™ΈλΆ€μ΄λ²€νŠΈμ΄λ‹€.

μ†ŒμΌ“ 이벀트둜 ν”„λ‘ νŠΈμ™€ μ„œλ²„μ‚¬μ΄μ˜ μ–΄λ–€ 데이터듀을 μ£Όκ³  λ°›λŠ” λ‘œμ§μ€ socket/socket.ts 에 μ •μ˜λ˜μ–΄ μžˆλŠ” ν•¨μˆ˜λ‘œ λ•œλΉ΅ μ€‘μ΄μ—ˆλŠ”λ° 갈수둝 어디에도 μ†ν•˜μ§€ μ•Šκ³  κ²‰λ„λŠ” λŠλ‚Œμ΄μ—ˆλ‹€.

μ΄λŸ°μ‹μœΌλ‘œ socket 을 닀루닀보면 둜직의 흐름이 ꡉμž₯히 λ³΅μž‘ν•΄μ§€λŠ”λ° μ—¬κΈ°μ €κΈ° μ˜λ‹€λ‹ˆλ©΄μ„œ μ–΄λ””μ„œ μ—λŸ¬λ₯Ό ν„°νŠΈλ¦΄μ§€λ„ λͺ¨λ₯΄κ² κ³  μ½”λ“œλ„ μ™”λ‹€κ°”λ‹€ ν•˜λ©΄μ„œ μœ μ§€λ³΄μˆ˜ν•˜κΈ° ꡉμž₯히 νž˜λ“€μ—ˆλ‹€.

  1. view μ—μ„œ socket event ꡬ독
  2. socket 이벀트 λ°œμƒ
  3. view μ—μ„œ dispatch
  4. saga μ—μ„œ λΉ„λ™κΈ°μ²˜λ¦¬ ν›„ dispatch
  5. reducer μ—μ„œ state μ—…λ°μ΄νŠΈ

λ‹€ν–‰νžˆ redux-saga μ—μ„œ μ œκ³΅ν•˜λŠ” channel 이벀트λ₯Ό μ΄μš©ν•˜λ©΄ νŒŒμž…μž…μΆœλ ₯, μ†ŒμΌ“ μ΄λ²€νŠΈμ™€ 같은 μ™ΈλΆ€ μ΄λ²€νŠΈμ™€ κ²°ν•©ν•  수 μžˆλŠ” 방법을 μ‚¬μš©ν•  수 있게 λœλ‹€.

κ·Έλž˜μ„œ μ•„λž˜μ™€ 같은 μˆœμ„œλ‘œ socket event λ₯Ό 핸듀링 κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€.

  1. channel μ—μ„œ 이벀트 μˆ˜μ‹ 
  2. saga μ—μ„œ 비동기 둜직 처리
  3. action dispatch

ν˜Ήμ€

  1. view μ—μ„œ action dispatch
  2. channel 을 톡해 이벀트 push

아직 이해λ₯Ό μ œλŒ€λ‘œ λͺ»ν•œ 뢀뢄이 μžˆμ–΄μ„œ μ½”λ“œκ°€ μƒλ‹Ήνžˆ λ”λŸ½μ§€λ§Œ 둜직이 λ‹¨μˆœν™” 되고 κ΄€λ ¨μžˆλŠ” side effect 끼리 λ¬Άμ—¬μ„œ saga μ•ˆμ—μ„œ μ²˜λ¦¬λ˜λ‹ˆ μ—λŸ¬μ²˜λ¦¬λ‚˜ μ½”λ“œ 관리가 μ‰¬μ›Œμ§ˆ 것 κ°™λ‹€.