삽질(socket.io)

백승일·2020년 11월 10일
0

TodayILearn

목록 보기
4/9

오늘은 socket.io를 이용하여 실시간 채팅앱을 개발해보려 했다. 튜토리얼 진행중 socket.broadcast.emit()을 사용하면 요청을 날린 클라이언트를 제외한 나머지 클라이언트에 메시지를 보낼 수 있다고 해서 사용했지만, 이상하게 메시지를 보낸 클라이언트에도 서버에서 메시지를 보냈다.

  socket.on('login',data=>{
    socket.name = data.name;
    socket.id= data.userId
    io.emit('login',data.name);
  });
  socket.on('chat',data=>{
    const msg = {
      form:{
        id:socket.userId,
        name:socket.name
      },
      msg : data.msg
    };
    socket.broadcast.emit('chat',msg)
  });

몇 시간을 고민하다가 소켓이 무엇을 이용해서 클라이언트를 구분할까 생각을 했다. 서버가 보낸 사람을 못알아보는 이유가 있을 것이다. 그때 딱 눈에 들어온 코드가 있었으니..."sokect.id"였다.

공식 문서를 찾아보니 socket.id를 이렇게 말하고 있었다.

"A unique identifier for the session, that comes from the underlying Client."

그렇다 이게 고유 식별자 였던 것이다. 젠장 난 그 고유한 식별자에 새로운 값을 할당하고 앉아있었으니 서버가 알아볼리 만무했던 것이다. 저 부분을

  socket.on('login',data=>{
    socket.name = data.name;
    socket.userId= data.userId
    io.emit('login',data.name);
  });

이렇게 변경함으로 내 3시간에 걸친 고민이 해결되었다. 이거 고민하느라 저녁도 굶었는데 밥이나 먹으러 가야겠다.

profile
뉴비 개발자

0개의 댓글