사실 비즈니스할거면 고민 안해도 됨


근데 개발자라면 정합성을 존나 체크하고 가는게 맞거든.



그니까 내가 지금


방에 접속하면, 최초로 채팅기록과 참여인원을 로딩하고, 그 이후로부터는 소켓으로부터 즉시즉시 하나씩 append를 하거나 참여인원같은 경우도 append 혹은 remove를 단건으로 진행함.



이때, 최초 로딩시에 수신되는 메세지들을 로딩시점 이후로 지연하지 않으면 로딩시점의 메세지가 소실되어버리거든.



메세지같은 경우는 메세지 소실로 끝나지만


방 참여인원같은경우는


영원히 동기화가 안된채 좀비가 남아버릴 수 있음.



물론 아주 적은 확률로 발생하는 것이기 때문에 무시하는게 맞지.



근데 이거를 해결하려고 보니까



이게 참 만만치가 않다....



내 지금 계획은


처음 방에 집어넣어줄때 방에 lock count를 1 증가시키고


로딩이 완료되면 프론트가 lock count를 1 감소시키고


lock count가 1 이상일 경우에는 모든 이벤트가 로깅되어서  지연상태가 되고

이 락카운트 감소시 카운트가 0이라면, 이벤트들을 모두 발생시키기



이게 내가 할 수 있는 최선이거든?



근데 이거 도입했다간 코드가 존나 불어나버린다....


그리고 더 큰 문제가



이게 최선이라는 보장도없어서..


참 난감하다.... 어렵다.... 이거 혼자 하는 프로젝트에서는 이정도 퀄리티 챙기기가 쉽지가 않아


진짜 작정하고 동시성프로그래밍 연습하려는게 아닌이상