inflearn logo
강의

Course

Instructor

[Revised 3rd Edition] Node.js Textbook - From Basics to Project Practice

Send text and GIFs in real time

12.7. 방장기능(강퇴) 질문드립니다.

78

rladudrl55148284

6 asked

0

socket.on('kicked', (data) => {   console.log('강퇴 이벤트 수신');   alert(data.message);      window.location.href = data.redirectUrl;  });
   socket.on('kickUser', (userId) => {   console.log('강퇴 요청 받음:', userId);   const targetSocket = chat.sockets.get(userId);     if (targetSocket) {     console.log('강퇴 대상 소켓 찾음');     targetSocket.emit('kicked', {       message: '강퇴되었습니다.',       redirectUrl: '/'      });        setTimeout(() => {       // 강퇴된 소켓 연결 해제       targetSocket.disconnect(true);       console.log(`사용자 ${userId} 강퇴 완료`);     }, 100);    } else {     console.log(`사용자 ${userId} 소켓을 찾을 수 없음`);   } }); 

socket.on('kicked',가 작동을안하네요 서버쪽에서는 targetSocket.disconnect(true)정상작동합니다.

node.js mysql mongodb express typescript socket.io jwt

Answer 2

0

zerocho

다른 웹소켓 이벤트는 동작하나요? 다른것도 안 돌아가면 연결문제, 특정 이벤트만 안 돌아가면 수신자 지정 문제입니다

1

rladudrl55148284

다른웹소켓이벤트는 작동해서, socket.on('kiced'on,..)의 위치를 위로 올리니까 정상적으로 작동되는데 이유가먼가요? 저 코드위치만 위로올렸는데 되네요

0

zerocho

위치를 어디에서 어디로 옮기신건지가 중요합니다. 해당 코드의 실제 실행 여부, 순서 등이 영향을 끼치는 거라서요

1

rladudrl55148284

socket.on('join',...)아래에 socket.on('kicked',...) 두엇다가

 const socket = io.connect('http://www.localhost:8005/chat', {
        path: '/socket.io',
        withCredentials: true
      });
socket.on('kicked', function(data){...    }

이런식으로 코드위치를 io.connect바로뒤로 하니까 되네요

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

김영기님이 현재 직면한 문제는 클라이언트 쪽에서 socket.on('kicked', ... 이벤트가 작동하지 않는 것을 다루고 있습니다. 반면, 서버에서 소켓 연결 해제는 제대로 작동하고 있다고 언급하셨습니다.

이 문제는 여러 가지 이유로 발생할 수 있으며, 몇 가지 점검 사항을 통해 원인을 파악할 수 있습니다.

  1. 이벤트 등록 확인: 클라이언트 코드에서 socket.on('kicked', ...)가 올바르게 등록되어 있는지 확인합니다. 클라이언트가 연결된 후 이벤트 리스너가 등록되었는지 체크해 보세요.

  2. UserId 매칭: 서버에서 chat.sockets.get(userId)를 사용하는데, 올바른 userId 값이 전달되었는지 확인하세요. 만약 이 값이 잘못되었다면, 클라이언트가 이벤트를 수신하지 못할 수 있습니다.

  3. 데이터 전송 여부: 서버에서 targetSocket.emit('kicked', {...})로 데이터가 제대로 전송되고 있는지 확인합니다. 콘솔 로그 등을 이용하여 해당 부분이 제대로 작동하는지 검사하세요.

  4. 네임스페이스나 룸 설정: 클라이언트와 서버가 같은 네임스페이스나 룸에 연결되어 있는지 확인합니다. 설정이 잘못되어 있을 경우 이벤트가 전달되지 않을 수 있습니다.

  5. 네트워크 문제: 클라이언트와 서버 간의 네트워크 문제로 인해 이벤트 수신이 안 되는 경우도 있을 수 있으니, 네트워크 상태도 점검해 보세요.

관련하여 도움이 될 만한 기존 Q&A도 소개합니다:

이 링크들은 비슷한 문제를 다루고 있어 문제 해결에 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

깃헙 질문

0

79

2

강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.

0

74

1

aws - lightsail 이용 관련

0

56

1

4강 http 서버 만들때 ESM방식으로 해도 될까요?

0

78

2

모듈 사용 시 단점이 있나요?

0

79

1

node.js 버전 및 typescript 적용 문의

0

91

2

12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요

0

67

1

12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.

0

73

2

12.7.1스스로 해보기 질문되나요

0

89

3

시퀄라이즈 실습하기 질문드립니다.

0

186

9

<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.

0

94

2

크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.

0

109

2

구매 결제관련 질문입니다 !

0

120

1

다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제

0

130

2

node 설치 방법이 전혀다르게 바뀐것 같습니다.

0

147

2

12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류

0

119

2

무료/프리미엄 동시 소유 시 질문

0

113

1

비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?

0

133

2

10강 cors에러 localhost:4000으로 접속했을때 에러

1

155

2

webstorm 해결할 수 없는 변수 문제

0

152

2

혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?

0

146

2

LightSail 실행 중 오류 질문드립니다!

0

198

2

RedisStore 사용법 질문

0

129

2

윈도우 파일탐색기 주소창에서 cmd를 입력할 경우 해당 경로로 바로 cmd를 열 수 있습니다.

2

183

2