본문 바로가기
source-code/FrontEnd

socket io Client API

by mattew4483 2023. 8. 17.
728x90
반응형

https://www.youtube.com/watch?v=djMy4QsPWiI

기본 사용 methods

io

url, options를 입력받아, Socket class를 반환.

import io from 'socket.id-client'
const socket = io.connect('http://localhost:3001)

 

emit()

메시지를 내보냄(서버로 전달) → 특정 이벤트를 실행시킴.

// client
const sendMessage = () => {
	socket.emit('send_message', () => {message:'hello'})
}

// server
io.on('connection', (socket) => {
	socket.on('send_message', (data) => {
    	console.log(data)
    })
})

 

on()

지정된 이벤트 발생시, 해당 이벤트를 수신.

import {useEffect} from 'react'

const socket = io.connect('http://localhost:3001')

useEffect(() => {
	socket.on('receive_message', (data)=>{
    	console.log(data)
    })
}, [socket])

위 예제에서는 Client측에서 useEffect를 통해 socket의 변화를 감지하는 식으로 수신하는데...

이게 최선의 방법은 아닐 것 같다...

 

broadcast.emit()

연결된 모든 수신자에게 발송.

// server
io.on('connection', (socket) => {
	socket.on('send_message', (data) => {
    		socket.broadcast.emit('receive_message', data)
    	})
})

 

join()

특정 채팅방에 참여

// server
io.on('connection', (socket) => {
	socket.on('join_room', (data) => {
    		socket.join(data)
    	})
})

 

to()

특정 채팅방에 해당되는 수신자에게만 발송.

// client
const sendMessage = () => {
	socket.emit('send_message', () => {message:'hello', room})	// 해당 room을 매번 명시
}

// server
io.on('connection', (socket) => {
	socket.on('send_message', (data) => {
    		socket.to(data.room).emit('receive_message, data')
    	})
})
728x90
반응형

'source-code > FrontEnd' 카테고리의 다른 글

응집도  (0) 2023.08.17
공유, 공유, 공유  (0) 2023.08.17
프론트엔드 디자인 패턴, 함수형 프로그래밍  (0) 2023.08.17
DOMContentLoaded event / load event  (0) 2023.08.17
Web Socket  (0) 2023.08.17