inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

탄탄한 백엔드 NestJS, 기초부터 심화까지

이벤트 설계와 기본 서비스 로직 완성

채팅앱 만들기 - 이벤트 설계와 기본 서비스로직 완성 에서 질문 있습니다

523

신재우

작성한 질문수 8

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!가 나타나지만 화면 진입자는 나타나지 않는 이유가 궁금합니다.

express nodejs mongodb ssr NestJS

답변 1

0

ohdnf

저도 해당 부분 궁금해서 찾아봤는데, 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