Node

Socket.io 기본 기능

한우종 2024. 9. 30. 17:25

 

 

Socket.io

 

명령어 기능 설명
io() 클라이언트에서 서버에 연결
socket.disconnect() 서버와의 연결을 해제
socket.emit(event,data) 클라이언트가 서버로 이벤트를 전송
socket.on(event,callback) 서버가 클라이언트로부터 이벤트를 수신할 때 호출되는 콜백함수
socket.join(room) 클라이언트를 특정 방에 추가
socket.leave(room) 클라이언트를 방에서 제거
socket.id 각 소켓의 고유 ID 로 클라이언트를 식별하는 데 사용
socket.connected 클라이언트가 현재 연결되어 있는지 여부를 확인

 

★ 주의사항

1.이벤트 이름은 임의로 설정해도 상관없지만 알아보기 쉬워야하며 일관성을 유지해야한다. 
서버의이벤트의 이름이 a라면 클라이언트에서 발생시키는 이벤트의 이름도 a로 동일해야함

2.데이터 값에는 JS의 모든 값 (문자열,숫자,객체,배열등)을 포함할 수 있다.

3.io는 전체 socket은 특정사용자 에게 전달

4.on은 발사준비 emit은 발사

 

서버 측 명령어 

  • io.on(event,callback)
//특정 이벤트가 발생했을 때 호출되는 콜백을 등록

//기본구조
io.on("이벤트이름"),(콜백함수)=>{
  로직
}

//예시
io.on('connection'),(socket)=>{
console.log('어쩌구 이벤트')
}

 

  • socket.emit(event,data)(귓속말)
//특정 소켓에 이벤트를 전송

//기본구조
socket.emit("이벤트 이름", "데이터값")

//예시
socket.emit("message","안녕하세요!")

 

  • io.emit(event,data)(전체채팅)
//모든 클라이언트에게 이벤트를 전송

//기본구조
io.emit("이벤트 이름", "데이터값")

//예시
io.emit('message',"모두 안녕하세요!")

 

  • socket.broadcast.emit(event,data)(본인제외 모두의 소켓)

/현재 소켓을 제외한 모든 클라이언트에게 이벤트를 전송

//기본구조
socket.broadcast.emit("이벤트 이름","데이터값")

//예시
socket.broadcast.emit("message","??님이 방에 참가했습니다! OR ??님이 방을 나갔습니다!")

 

  • socket.join(room)(파티초대)

//클라이언트를 특정 방에 추가한다.

//기본구조
socket.join("방이름")

//예시
socket.join('room1')

 

  • socket.leave(room)(강퇴)

//클라이언트를 특정 방에서 제거한다.

//기본구조
socket.leave("방이름")

//예시
socket.leave("room1")

 

  • io.to(room).emit(event,data)(파티채팅)
//특정 방의 모든 클라이언트에게 이벤트를 전송한다.

//기본구조
io.to("방이름").emit("message","방에 모든 클라이언트에게 전송")

//예시
io.to("1Party").emit("message","1파티 왼쪽이요~")

 

  • socket.disconnect()(종료)

//현재 소켓 연결을 해제한다.

//기본구조
socket.disconnect()

클라이언트 측 명령어

  • socket.on(event,callback)

//특정 이벤트를 수신하고 처리하는 콜백을 등록한다.

//기본구조
socket.on("이벤트 이름" , (서버로부터 받아온 콜백)=>{
 로직
})

//예시
socket.on("message",(data)=>{
 console.log('서버로 받아온 메시지:',data)
})

 

  • socket.emit(event,data)

//서버에 이벤트를 전송한다.

//기본구조
socket.emit('이벤트 이름',"데이터값")

//예시
socket.emit("message","서버를 통해 유저1에게 전달하는 메시지")

 

  • socket.disconnect()

//현재 소켓 연결해제

//기본구조 (서버와 동일)
socket.disconnect()

 

  • socket.id

//현재 소켓의 고유 ID를 가져온다.

//예시
console.log("소켓ID:",socket.id)

 

  • socket.connected

//현재 소켓이 연결되어 있는지 여부 확인

//예시
if(socket.connected){
console.log("연결중")
}