TIL 2021-10-01

김기태·2021년 10월 1일
0

오늘의 개발.

오늘은 항해 99 주특기 심화과정 4주차까지 강의를 들었다.
특히 4주차의 주제는 socket.io를 이용한 실시간 통신이었는데
브라우저를 여러개 켜고 테스트하는 것은 처음이고
여러 고객의 입장이 되는 것이 처음이라 굉장히 감을 잡는데 어려웠다.

막힌 점.

socket.io로 현재 상품을 보고있는사람 수를 실시간으로 나타내는 것을 과제로 받았는데
해결하는데 10시간은 걸린 것 같다...

막힌 이유.

1. 접근
처음부터 접근법을 잘못 잡았다.
나는 배열을 사용하여 현재 사용자들을 나열하여 나타내려고 했는데
생각해보니 보고있는 상품목록도 나눠서 나열해야 한다.
하지만 여기서 문제점이 생긴다. 이렇게 하면 실시간으로 값이 바뀌지 않는다는 것이다.
새로고침을 해야 값이 변경되고 이렇게 하면 실시간이라는 의미가 없어져버리게 되는 것이다.
그래서 나는 과감히 배열을 버리고 socket의 유저 정보를 사용하여 실시간으로 값이 바뀌게
기능을 구현했다. 이를 해결함으로써 Map 객체도 알게 되었다.
2. disconnect, disconnecting
disconnect는 접속이 끊겼을때 disconnecting은 room에서 나갈때 발생한다.
즉 disconnect를 사용하면 room을 더이상 사용할 수 없지만 disconnecting은
room을 나가기 전에 발생하기 때문에 room을 사용하여 room안에 있는 유저들을
이용할 수 있다.
3. 에러
disconnecting은 새로고침할때, 앱을 끌때, room을 나갈때 다 발생한다.
그렇기 때문에 조건을 줘서 room을 나갈때만 작동하게 해야하는데
초기에 그런 조치를 하지 못해서 에러가 많이 나서 시간을 많이 잡아먹은 것 같다.

결론.

역시 하나하나 손수 코드를 짜봐야 배울게 많아지는 것 같다.
사실 10시간이라는 엄청난 시간을 쏟아부었지만 후회는 없다.
오히려 기능을 구현하고 나서 그에 상응하는 성취감은 이루어 말할 수 없었다.
그래도 많이 앉아있으니까 허리가 좀 아프다.

profile
김개발

0개의 댓글