-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fe,be/feature/#567 fe,be 소켓 이벤트 타입 공유하기 #571
The head ref may contain hidden characters: "FE,BE/feature/#567-FE,BE-\uC18C\uCF13-\uC774\uBCA4\uD2B8-\uD0C0\uC785-\uACF5\uC720\uD558\uAE30"
Conversation
Deploying with Cloudflare Pages
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 이제 타입 수정도 용이해지고 이벤트 사용도 더 안전해졌다!
"typeRoots": ["../../@types"], | ||
"include": ["src", "../../@types"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍👍
{ | ||
scenario: 'data: { description: RTCSessionDescription; roomName: string } 형식 인수 emit', | ||
eventName: 'connection' as any, | ||
eventArgs: [{ description: 'description', roomName: 'roomName' }], | ||
}, | ||
{ | ||
scenario: 'data: { candidate: RTCIceCandidate; roomName: string } 형식 인수 emit', | ||
eventName: 'connection' as any, | ||
eventArgs: [{ candidate: 'candidate', roomName: 'roomName' }], | ||
}, | ||
{ | ||
scenario: 'roomName: string 형식 인수 emit', | ||
eventName: 'checkRoomExist' as any, | ||
eventArgs: ['roomName'], | ||
}, | ||
{ | ||
scenario: 'roomId: string, password: string 형식 인수 emit', | ||
eventName: 'createRoom' as any, | ||
eventArgs: ['roomId', 'password'], | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💬 각각 어떤 용도일 때 호출하는지 드러나면 좋을 것 같아!! eventArgs
만으로 어떤 걸 emit하는지 알 수 있어서 어떤 경우에 호출하는지가 유지보수할 때 용이할 것 같아
Note
현재 이 기능은 내부 라이브러리로 리팩토링되었습니다.
https://github.com/boostcampwm2023/web09-MagicConch/tree/dev/packages/socket-event
🔮 resolved #567
Important
@Doosies
HumanSocketManager에 타입 적용 후, 타입 에러 수정 필요
extends SocketManager<any, any>
로 되어 있는 걸 주석 처리된 대로 수정한 후 타입 에러를 수정해야 함.변경 사항
socket.on()
/socket.emit()
에서 정해진 API로 사용하지 않으면 타입 에러가 나도록 설정고민과 해결 과정
1️⃣ 공식 문서를 참고해서 type을 지정하도록 시도
https://socket.io/docs/v4/typescript/
외부(
/@types/event.d.ts
)에 소켓 이벤트 타입을 선언해두는 파일을 놓고 frontend, backend 공통으로 사용하도록 설정함.아래 처럼 이벤트 종류, 각 이벤트의 리스너의 타입을 선언해둠.
2️⃣
socket.on()
/socket.emit()
에서 정해진 API로 사용하지 않으면 타입 에러가 나도록 설정함.frontend
backend
(선택) 테스트 결과
ex) 베이스 브랜치에 포함되기 위한 코드는 모두 정상적으로 동작해야 합니다. 결과물에 대한 스크린샷, GIF, 혹은 라이브 데모가 가능하도록 샘플API를 첨부할 수도 있습니다.