인프런 커뮤니티 질문&답변

김경근님의 프로필 이미지
김경근

작성한 질문수

Node.js 교과서 - 기본부터 프로젝트 실습까지

리뉴얼 강의 12강 socket.io에서 req.session접근 관련 질문

해결된 질문

작성

·

744

0

socket.request.session에서는 color에 접근할 수 없기때문에

app.js에서 sessionMiddleware를 따로 분리하여 socket.js에 넘겨주어

socket.request.session에서 color 속성에 접근할수 있게 했는데

"Cannot read property 'color' of undefined" 오류가 발생하는네요 원인을 모르겠습니다

제가 코드를 잘못작성한것 같아서 github 코드를 참고하여 수정해봤는데도 계속 이런 현상이 나타나네요

콘솔로 socket.request.session을 찍어보는데 아예 undefined가 출력되는걸 봐서 socket.request.session에

request.session이 전달되지 않는것 같습니다

https://socket.io/docs/v3/faq/index.html

혹시 express-session에 접근할 수 있는 다른 방법이 있나 공식문서를 참고해봤는데 강의내용과 다르지 않더라구요

더 찾아본 결과 express-socket.io-session 라이브러리가 존재하는걸 확인했는데 이걸 사용해야 하나 고민입니다

답변 6

4

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

io.use 부분을 다음으로 대체하시면 됩니다.

const wrap = middleware => (socket, next) => middleware(socket.request, {}, next);
chat.use(wrap(cookieParser(process.env.COOKIE_SECRET)));
chat.use(wrap(sessionMiddleware));

0

혹시 해결됐나요?? 저도 같은 오류로 헤매다가 여기를 발견해서 댓글 남겨둬요

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

확인해보겠습니다~ 저도 책 때문에 소스코드 수정이 필요하네요 ㅠㅠ

0

김경근님의 프로필 이미지
김경근
질문자

2버전에서는 아무 오류없이 정상동작합니다.

3버전으로 업데이트되면서 변경된 부분이 있는것 같아서 공식문서상에서 찾아보고 있는데 쉽지 않네요 

0

김경근님의 프로필 이미지
김경근
질문자

답변 감사합니다. 일단 2버전으로 다운그레이드 해서 진행해볼게요

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

제 강좌에서는 socket.io 2버전을 사용했습니다. 3버전에서도 같게 동작하는지 저도 한 번 확인해보아야겠습니다.

김경근님의 프로필 이미지
김경근

작성한 질문수

질문하기