Description 어떤 에러인가요?
한 이벤트 함수 내에서 emit을 여러번 보내지 못하는 이슈
에러 메시지
한 유저가 채팅 메시지를 작성하면 다른 유저들에게 그 채팅 메시지를 보내 화면에 표시하도록 되어있었다(sendMessage)
그런데 채팅 메시지를 수정/삭제를 위해 그 채팅 메시지의 id를 알려줄 필요가 생겼고(id를 사용하여 DB에 접근할 수 있다)
id를 작성자에게 보내주도록 코드를 보완해야했다(nowMessageId)
하지만 실제로 테스트 해보니 하나만 보내지거나 둘다 보내지지 않는 문제가 생겼다
에러 핸들링 방법
emit을 보내는 다양한 방법을 찾아보고 적용해보며 우리가 원하는 동작을 할 때까지 테스트를 진행했다
소켓 아이디를 사용하여 sender에게만 보내기 (실패: emit이 보내지지 않음)
socket . broadcast . to ( room ) . emit ( 'sendMessage' , { ...chat } ) ;
socket . to ( socket . id ) . emit ( 'nowMessageId' , { id : chat . id } ) ;
모두에게 보내는 방식 사용하기 (실패: 한 emit만 보내짐)
socket . to ( room ) . emit ( 'sendMessage' , { ...chat } ) ;
chatIo . to ( room ) . emit ( 'nowMessageId' , { id : chat . id } ) ;
여러가지 방법을 시도했으나 계속 실패하던 도중 공식문서에서 해답을 찾을 수 있었다
그래서 공식 문서에 나온 대로 emit을 수정하여 시도했더니 성공했다..! 해결 완료!
socket . to ( room ) . emit ( 'sendMessage' , { ...chat } ) ;
socket . emit ( 'nowMessageId' , { id : chat . id } ) ;
에러 핸들링을 위해 참고한 레퍼런스 링크
Reactions are currently unavailable
You can’t perform that action at this time.
어떤 에러인가요?
에러 메시지
sendMessage)id를 작성자에게 보내주도록 코드를 보완해야했다(
nowMessageId)에러 핸들링 방법
그래서 공식 문서에 나온 대로 emit을 수정하여 시도했더니 성공했다..! 해결 완료!
에러 핸들링을 위해 참고한 레퍼런스 링크