Socket IO 이벤트 통신
소켓IO 의 메소드의 특징은 클라이언트에서 발생하는 이벤트는 개발자가 임의로 설정할 수 있다는 점이다.
이벤트는 문자열로 지정하며 직접 이벤트를 발생시킬 수 있다. 전반적으로 노드 이벤트 핸들러 방식Visit Website을 따르고 있다고 보면 된다.
javascript// 해당 이벤트를 받고 콜백함수를 실행
socket.on('받을 이벤트 명', (msg) => {
})
// 이벤트 명을 지정하고 메세지를 보낸다.
socket.emit('전송할 이벤트 명', msg)
이런식으로 메세지 마다 고유한 이벤트를 등록해 구별해서 송수신하면,
채팅방에서 '귓속말' 기능처럼 특정 어느 사람한테만 메세지를 송신한다던지 ..등 다양한 통신 기능을 구현할 수 있다.
Socket IO 송수신 메소드
소켓 메세지 수신
javascript// 접속된 모든 클라이언트에게 메시지를 전송한다
io.emit('event_name', msg);
// 메시지를 전송한 클라이언트에게만 메시지를 전송한다
socket.emit('event_name', msg);
// 메시지를 전송한 클라이언트를 제외한 모든 클라이언트에게 메시지를 전송한다
socket.broadcast.emit('event_name', msg);
// 특정 클라이언트에게만 메시지를 전송한다
io.to(id).emit('event_name', data);
소켓 메세지 송신
javascript// 클라이언트와 소켓IO 연결됬는지 안됬는지 이벤트 실행. (채팅방에 누가 입장하였습니다/퇴장하였습니다 )
io.on('connection/disconnection', (socket) => {
});
// 클라이언트에서 지정한 이벤트가 emit되면 수신 발생
socket.on('event_name', (data) => {
});
Socket.IO 통신 구현해보기
소켓 서버 설정
1) app서버 생성
javascriptconst app = require("express")();
const server = app.listen(8005, ()=>{ });
2) 소켓IO에 서버 정보 넘겨주고 구동
javascriptconst SocketIO = require('socket.io');
// 서버 연결, path는 프론트와 일치시켜준다.