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("연결중")
}