Node.js 심화 socket -3-
__________________________________
간단한 메세지 데이터 전송 소스
=> 해당 소스를 보면서 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);
——