2022-05-16(월) TIL

황인호·2022년 6월 7일
0

TIL 모음

목록 보기
52/119

오늘해야할일

  • 인프런 강의 20개 듣기 [9개]

  • 알고리즘 문제풀이

  • 제로초 유튜브 하나보기

  • 인프런 강의

    강의명 : Socket.io 사용해보기

    폴링을 먼저시도하고 웹소켓을 시도한다 ⇒ 구형브라우저는 웹소켓을 지원하지않는다

    그렇기때문에 지원하지않는 브라우저를 위해서 폴링은먼저 시도하고 그 다음에 웹소켓으로 업그레이드한다.

    • Socket.IO 패키지를 불러와 익스프레스서버와 연결. 두 번째 인수는 클라이언트와 연결할 수 있는 경로(/socket.io)

    • connection 이벤트는 서버와 연결되었을 때 호출, 콜백으로 소켓 객체(socket)제공

    • socket.request로 요청 객체에 접근 가능, socket.id로 소켓 고유 아이디 확인 가능

    • disconnect 이벤트는 연결 종료 시 호출, error는 에러 발생 시 호출

    • reply는 사용자가 직접 만들 이벤트로 클라이언트에서 reply 이벤트 발생 시 서버에 전달된다.

    • socket.emit으로 메시지 전달. 첫 번쨰 인수는 이벤트 명, 두번째 인수가 메시지

      ※ Socket.IO는 먼저 폴링 방식으로 연결 후(웹 소켓을 지원하지 않는 브라우저를 위해), 웹 소켓을 사용할 수 있다면 웹 소켓으로 업그레이드

      ※ 웹 소켓만 사용하고 싶다면 transports 옵션을 다음과 같이 주면됨

const socket = io.connect('http://localhost:8005', {
	path : '/socket.io',
	transports: ['websocket'], //이거를 추가하면 웹소켓만 사용한다는 뜻
	//해당 코드를 제외하면 폴링 후에 웹소켓으로 연결됨
}),

nodebird 알게된 사실들

[app.js에 추가해줘야하는 부분]
sequelize.sync({force:false}) //sync는 promise이기 때문에,
//then, catch를 사용하여 성공인지 오류인지 확인할수있도록한다.
	.then(()=> {
		console.log('데이터베이스 연결 성공')
	})
	.catch((error)=> {
		console.error(err)
	})
    
    
 [app.js에 추가해줘야하는 미들웨어]
//404 처리 미들웨어
app.use((req,res,next)=> {
	const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`)
	error.status = 404
	next(error)
})

//500 에러 미들웨어
//단, 에러미들웨어를 사용하기 위해서는 render 
//error.html을 만들어야한다.
app.use((err,req,res,next)=> {
	res.locals.message = err.message;
	res.locals.error = process.env.NODE_ENV !== 'production' ? err : {};
	res.status(err.ststus || 500).render('error')
})   

profile
성장중인 백엔드 개발자!!

0개의 댓글