22.11.16 01:02 작성
·
411
0
function helloUser() {
const username = prompt('What is your name?');
socket.emit('new_user', username, (data) => {
drawHelloStranger(data);
});
}
사용자가 처음 화면에 진입했을 때에 사용자가 이름을 입력하고 나면 ‘new_user’에 해당하는 게이트웨이 로직이 실행되는 것으로 알고 있습니다.
이 로직 안에서 ‘user_connected’에 대해 브로드 캐스팅을 해주고 있는데요 socket.broadcast.emit('user_connected', username);
프론트엔드에서 아래와 같이 connected!라는 채팅글도 화면에 나타나야 할 것 같은데
socket.on('user_connected', (username) => {
drawNewChat(`${username} connected!`);
});
화면 진입자 입장에서는 connected!부분이 나타나지 않습니다. 왜 그런지 설명해주실 수 있을까요? 화면 진입자 또한 위 코드를 수행하고 있는데
화면 진입자를 제외한 나머지 사용자에게는 connected!가 나타나지만 화면 진입자는 나타나지 않는 이유가 궁금합니다.
답변 1
0
저도 해당 부분 궁금해서 찾아봤는데, Socket.IO 공식문서(링크)에 잘 나와있는 듯하여 공유드립니다.
@SubscribeMessage('new_user')
handleNewUser(@MessageBody() username: string, @ConnectedSocket() socket) {
// 입장한 사람(sender) 제외 나머지 client에게 broadcast
socket.broadcast.emit('user_connected', username);
// 모든 client에게 broadcast
// socket.emit('user_connected', username);
return username;
}
핸들러 인자로 받는 socket
에 보낸 사람의 정보가 있으니 이렇게 구분하여 broadcast할 수 있지 않나 싶네요.
오래된 질문이지만 도움이 되셨길 바랍니다.