채팅앱 만들기 - 이벤트 설계와 기본 서비스로직 완성 에서 질문 있습니다
523
작성한 질문수 8
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할 수 있지 않나 싶네요.
오래된 질문이지만 도움이 되셨길 바랍니다.
프로젝트 환경 세팅할 때 최신 노드 버젼을 사용하시는 분들은 참고하셔도 좋을 것 같아요~
2
80
1
DTO에 대한 질문
1
87
2
백엔드 MVC에서 View의 역할은 무엇인가요?
1
93
2
추가 업데이트 관련 건
0
90
2
nest js 버전문제
0
79
2
mongdb 스키마 공식 문서와 형태가 다른 이유 궁금합니다.
0
103
1
라인 끝에 에러 표시(eslint) 때문에 구글 찾아 보니.
0
74
1
전체 고양이 조회 라우터 중 error.message 오류
0
67
1
캡슐화 추가 설명 중 단일책임원칙 관련 질문
0
104
0
42강 고양이끼리 소통 댓글 구현 중 Schema hasn't been registered for model 'comments' 에러 해결
0
81
1
채팅 이슈
0
133
1
모듈이 더 이상 지원하지 않는답니다
0
206
1
오류가 있습니다
0
106
1
import 에서 오류가 납니다
0
127
1
이런 오류가 나옵니다
0
100
1
에러가 발생합니다
0
109
1
프론트 에러 뜨는데 수정 안해주시나요
0
156
1
emit() broadcast.emit() 질문있습니다
0
101
1
서버연결이 안됩니다.
1
403
1
[PM2][ERROR] Command not found
0
519
1
S3에 업로드까지는 성공했는데 사진이 나오지 않습니다.
0
248
1
error_code : Property 'user' does not exist on type 'Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>'.ts(2339)
0
601
1
jwt를 따로 연습하고 있는데 env를 못읽는 것 같습니다.
0
322
2
Ec2로 안하시는 이유가 있을까요?
0
343
1





