msdou45 2023. 1. 15. 19:27

__________________________________

 

간단한 메세지 데이터 전송 소스

 

=> 해당 소스를 보면서 web socket 통신이 어떻게 데이터 소스를 전달하는지 파악해 보자.

 

 

폴더 : kimminsoo -> sparta -> node_js -> learning -> second_web_socket_data_sending

 

 

 

handleUpgrade() 메서드는 wss HTTP 업그레이드 요청을 처리하는 데 사용되는 WebSocket 서버(이 경우) 의 메서드. 

 

Upgrade <— 이 메서드는 클라이언트가 다른 프로토콜(이 경우 WebSocket 프로토콜)로 연결을 업그레이드하려고 

함을 나타내는 헤더 가 포함 된 HTTP 요청을 서버가 수신할 때 호출된다.

 

handleUpgrade()메서드는 다음 인수를 사용.

  • req : HTTP 업그레이드 요청을 나타내는 요청 객체.
  • req.socke: 클라이언트와 서버 간의 연결을 나타내는 소켓 개체.
  • Buffer.alloc(0)onSocketConnect: 길이가 0바이트인 비어 있는 새 버퍼를 생성한다. 이 버퍼는
    콜백을 위한 WebSocket 데이터로 사용된다.
  • onSocketConnect: WebSocket 연결이 설정되면 호출되는 콜백 함수

 

handleUpgrade()메서드는 WebSocket 프로토콜에 대한 연결을 업그레이드 onSocketConnect하고,

업그레이드된 소켓 개체를 인수로 사용하여 콜백을 호출한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

_____________________________________

 

socket.io 실습해보기.

 

 

Socket.io 의 특징.

 

=> 특징은 클라이언트에서 발생하는 이벤트는 개발자가 임의로 설정할 수 있다는 점.

이벤트는 문자열로 지정하며 직접 이벤트를 발생시킬 수 있다. 전반적으로 노드 이벤트 핸들러 방식 따르고 있다고 보면 된다.

 

——

// 해당 이벤트를 받고 콜백함수를 실행

socket.on('받을 이벤트 명', (msg) => {

})

 

// 이벤트 명을 지정하고 메세지를 보낸다.

socket.emit('전송할 이벤트 명', msg)

——

 

=> 이런식으로 메세지 마다 고유한 이벤트를 등록해 구별해서 송수신하면, 

채팅방에서 '귓속말' 기능처럼 특정 어느 사람한테만 메세지를 송신한다던지 ..등 다양한 통신 기능을 구현할 수 있어.

 

 

 

— Socket IO 송수신 메소드 —

——

// 접속된 모든 클라이언트에게 메시지를 전송한다

io.emit('event_name', msg);

 

// 메시지를 전송한 클라이언트에게만 메시지를 전송한다

socket.emit('event_name', msg);

 

// 메시지를 전송한 클라이언트를 제외한 모든 클라이언트에게 메시지를 전송한다

socket.broadcast.emit('event_name', msg);

 

// 특정 클라이언트에게만 메시지를 전송한다

io.to(id).emit('event_name', data);

——