해결된 질문
작성
·
132
0
채팅 기능 구현 중에 해결이 안되는 문제가 있어서 질문 드립니다.
Router 내에서 req.app.get('io').of('/chat').to(chatting_id).emit('chat', message) 방식으로 소켓에 데이터를 전달할 경우 해당 chatting_id 소켓에 연결되어있는 클라이언트들에게 메세지가 전달되지 않습니다.
socket.js 안의 on에서 동일하게 chatting_id를 통해서 emit할경우 수신/발신 모두 정상적으로 진행됩니다.. chatting_id 값은 숫자 1로 동일합니다.
콘솔에 req.app.get('io').of('/chat') 까지는 객체가 잘 들어있는것을 확인했습니다.. 강의 내부에서 동작하는것과 똑같이 작성한것같은데 원인이 무엇일까요..?
라우터 파일(별도 파일로 작성 후 router.js에서 사용)
답변 2
0
아 네네
아뇨 여기는 프론트가 아닙니다. ㅠㅠ 여기는 서버에요. 저기는 네임스페이스 선언하는 부분이 아닙니다. 프론트랑 서버랑 둘 다 네임스페이스가 chatting이어야하는데 서버만 그런 것 같습니다.
아 프론트요.. 프론트는 포스트맨에서 접속했고,, 주소는 http://localhost:80/chatting
eventlistner로 chat 으로 선언해서 구성했습니다.
router를 이용하지 않고 소켓 내에서 event name chat으로 진행하면 연결된 유저들 사이에서 수/발신 정상적으로 진행됩니다.. 근데 router 내에서 emit 할때만 해당 메세지가 전달이 안되네요..
라우터는
이렇게 구성되어있습니다.
아뇨 저는 프론트를 따로 만들지 않아서,, 브라우저로 확인은 못해봤네요..
테스트용으로라도 프론트를 따로 만들어서 진행해보는게 좋을까요?
소스 단에서 제가 열심히 본다곤 했는데 별개로 이슈는 없겠죠..?
해결을 했는데 혹시 다른분들도 비슷한 증상으로 고생하실까봐 댓글 남깁니다.
chatting_id로 소켓 분리 시 한곳은 '1', 한곳은 1로 지정되어서 송수신이 원활히 진행되지 않았었던것으로 확인했습니다. 타입이 없으니 이런 오류도 발생하네요..ㅎㅎ
0
프론트쪽도 chatting이 맞나요?