Socket.io 채팅방

songtofu·2022년 6월 25일
1

1. Socket.io의 adapter 기능

  • 작은 채팅 서버는 하나의 서버에서 돌아간다. 하지만 사이즈가 커지게되면 하나의 서버로 돌릴 수 없는 경우가 생긴다.

  • 이런 경우 특정 소켓은 A서버에 다른 소켓은 B서버에서 돌리는 경우가 생기고 이런 경우 server A에 연결된 클라이언트는 server B에 연결된 클라이언트와 소통할 수 없다는 문제 발생

  • 이를 대처하기 위해 adapter가 만들어졌다. (= 두 서버를 연결해서 데이터를 전송하는 기능을 맡아준다.)

  • 현재 이 adapter는 메모리에 존재합니다. 하지만 실제 서버에서는 MongoDB와 같은 곳에 연결되게 됩니다.

  • 지금은 단순한 하나의 서버기 때문에 메모리에 adapter를 연결시켜서 사용합니다.

  • adapter가 어떻게 사용되고 있는지 확인하기 위해서 server.js에서 console.log를 이용해서 adapter를 출력해봅니다.

  • 아래와 같은 내용이 나오는데, 우리가 눈여겨봐야 할 내용은 rooms와 sids입니다.

1.1) rooms

  • private room과 public room이 있다.
  • private room = 서버와 브러우저 간의 연결 personal ID로 구성.
  • public room = 내가 생성한 이름이 앞에 들어가있다. 그리고 Set 안에는 perseonal ID가 들어간다.
    이 Set 안에는 해당 public room에 연결된 personal ID들이 들어간다.

1.2) sids

  • sids는 personal Id가 Key값으로 들어가 있다.
  • Value에는 해당 personal ID가 접속해있는 방이 들어가있다.(= rooms에는 방과 personal ID가 모두 들어가 있고, sids에는 personal ID만 들어가 있다.)

1.3) 비교하기

-> 둘을 비교하면 우리가 만든 방만 추출해낼 수 있다. (?)



2. 방에 있는 사람 수

  • rooms에 있던 key값들의 value값 개수가 해당 room에 있는 사람 수이다.

강퇴?

출처

profile
읽으면 머리에 안들어와서 직접 쓰는 중. 잘못된 부분 지적 대환영

0개의 댓글