TIL

2024.01.18 TIL Socket 1

영우는여전히 2024. 1. 18. 21:29

1. Socket...

김영우 Socket.IO 채팅방 열기,

채팅 시스템의 데이터를 어떻게 저장할지

stack overflow 과제 하던 것에서 수정해서 테스트 하기로 했는데,

 

뭔가 빠르게 보고 따라할 수 있는 블로그를 찾아봤다.....

한글로 된 블로그 위주로만 보다 보니

보통 포스팅용으로는 zoom 클론 코딩이 많았던 것 같다.

 

아무래도 최종 프로젝트인데 비록 복습반이지만.

빠르게 해야 한다는 압박이 있었던 것 같다.

빠르게 하려고 하다 보니

블로그를 얕게 보고 하려니 잘 이해도 안되고

다른 라이브러리를 같이 사용하는 경우도 많았다.

 

그냥 결국에 공식문서를 보고 참고하는게 나을 것 같다는 생각이 들었다.

 

근데 공식문서만 그냥 보는 것도 사실 좀 어려워서

 

튜터님께 어떤 것을 참고하면 될 지 물어보았고,
inpa 님 블로그도 보게 되었다.

https://poiemaweb.com/nodejs-socketio 

 

Node.js(Express)와 Socket.io | PoiemaWeb

WebSocket, Socket.io를 사용한 실시간 채팅 애플리케이션

poiemaweb.com

 

https://inpa.tistory.com/312

 

[WEB] 🌐 웹 소켓 (Socket) 정리 (역사부터 차근차근)

​웹 개발을 처음 배우기 시작했다면 서버와 클라이언트의 통신은 모두 HTTP 프로토콜만 이용해서 이루어진다고 생각할 수 있습니다. 하지만 웹 개발을 하면서 채팅, 게임, 주식 차트 등의 실시

inpa.tistory.com

 

https://inpa.tistory.com/594

 

[SOCKET] 📚 WS 웹소켓 사용해보기

WS (Web Socket) [WEB] 🌐 웹 소켓 (Socket) 역사부터 정리 ​ 웹 개발을 처음 배우기 시작했다면 서버와 클라이언트의 통신은 모두 HTTP 프로토콜만 이용해서 이루어진다고 생각할 수 있습니다. 하지만

inpa.tistory.com

 

https://inpa.tistory.com/entry/SOCKET-%F0%9F%93%9A-SocketIO-%EC%82%AC%EC%9A%A9-%ED%95%B4%EB%B3%B4%EA%B8%B0

 

[SOCKET] 📚 Socket.IO 사용 해보기

Socket.IO node.js에서는 많은 웹 소켓 구현체가 있다. socket.io와 ws가 있다. ws는 기본에 충실한 느낌이고, socket.io는 기본도 기본이지만 뭔가 색다른 기능을 제공한다. 예를 들어 room이라는 기능을 이

inpa.tistory.com

 

HTTP는 사용자는 서버로부터 새로운 정보를 받아보기 위해서,

반드시 새로운 URL요청해야 한다

 

AJAX 라는 것이 있지만

HTTP의 한계를 완전히 벗어나지 못했다.

=아직도 클라이언트가 요청하고, 그 다음에 서버로 부터 응답 받는 것은 그대로임

npm i socket.io

 

설치는 이렇게.

 

크게 4가지 있다

 

보내는 코드,

서버가 듣는 코드,

서버가 보내는 코드,

유저가 듣는 코드

 

// 듣겠다.
socket.on('받을 이벤트 명', (msg) => {
})

// 전하겠다
socket.emit('전송할 이벤트 명', msg)

 

//수신 (메시지 받기, 듣기)

// 접속된 모든 사람에게 전한다.
io.emit('event_name', msg);

// 메세지를 전한 사람에게만 전한다.
socket.emit('event_name', msg);

// 메시지를 전한 사람 제외한 모든 사람에게 전한다.
socket.broadcast.emit('event_name', msg);

// 특정 사람에게만 메시지를 전송한다
io.to(id).emit('event_name', data);

 

 

//송신 (보내기, 말하기)

// 클라이언트와 소켓IO 연결 유무 이벤트 실행 (채팅방에 클라이언트 입장/퇴장)
io.on('connection/disconnection', (socket) => {
});

// 클라이언트에서 지정한 이벤트가 emit(방출)되면 수신 발생
socket.on('event_name', (data) => {
});

 

.
.
.
사용 방법은 다음에..