#3 - Socket.iO
- 이벤트에서 가장 중요한 것은 connection임
- yarn add morgan 설치
- 크롬 콘솔 : io("/")
자기자신에게 연결됨
- 어떤 소켓이랑 연결됐는지 정보를 얻기 위해, socket과 연결될때마다 socket이라는 인자를 콘솔에 출력해보자
Hello World SocketiO는 채팅 어플리케이션임
- 2개의 이벤트가 만들어짐
- 하나는 유저가 보내고
- 다른 하나는 유저가 조인하는 것
#벡엔드에서 프론트엔드로 어떻게 이벤트를 보내는지
=> 누군가 SocketIO로 연결하면, 연결된 socket을 가져와서 메세지를 보냄
=> 이때 보느는 메세지를 hello로 함
#broadcast는 지금 접속한 클라이언트를 제외하고 모든 클라이언트에게 메세지를 보냄
RECAP
- 클라이언트는 이벤트를 듣고 있어야 함
- server.js : 백엔드
- index.js : 클라이언트
- 1) 클라이언트가 이벤트를 듣고 있지 않다면, 백엔드가 서버에 계속 보내도 클라이언트 반응안함
- 똑같은 케이스인데 다른 방식이 있음
- 2) 이번엔 서버가 이벤트를 듣고 있음, 예를들면 채팅할 때 무슨일이 일어나는가? 첫번째로 이벤트가 왔다 갔다 한다.
채팅을 할때 먼저 connection이라는 이벤트를 발생시키고, 그리고 connection이 일어나면 서버가 다른 소켓에게 이 소켓이 연결됐다고 다른 소켓들에게 알려줄 것임 => 그것이 브로드캐스트임!!
Chat with SocketIO
소켓 연결 -> 소켓이 보내는 이벤트를 들어야 하고, 소켓이 메세지를 보내면 그 메세지를 들어야함
-소켓이 메세지를 보내면
- 우리가 보낸 메세지와 함께 messageNotifi라는 이벤트를 broadcast함
총정리 (출처:댓글 정중식님)
1)socket은 메모리상에 저장된다.
2)쿠키와는 달리 서버와 클라이언트의 연결이 유지된다.
3)서버 이벤트 on으로 발생한것을 클라이언트쪽에서 이벤트 emit나 broadcast으로 받아줘야 이벤트가 발동된다.
4) 반대로 클라이언트에서 이벤트 on했을때 서버쪽에서 emit나 broadcast으로 받아줘야 한다.
**쿠키가 필요 없음!
왜냐면 서버에 연결되어 있어야 거기에 붙을 수 있기 때문이야
- connect 되어 있으면 서버가 연결되어 있기 때문
#연결을 계속 유지하고 싶으면 socket을 위한 데이터베이스를 사용해야하는데, 사용안하면 리프레쉬하면 닉네임 설정같은게 다 사라짐
'[WEB]' 카테고리의 다른 글
[Spring] JUnit (0) | 2020.01.14 |
---|---|
[Spring] 스프링 프레임워크란 / MyBatis (0) | 2020.01.14 |
[Spring] Apache Maven 설치 / 프로젝트 생성 (0) | 2020.01.13 |
[Spring] 예제로 배우는 스프링 프레임워크 입문 목차 - 백기선 (0) | 2020.01.12 |
[Node.js] 웹 게임 개발 #4 (0) | 2019.12.05 |