웹소켓 사용

프로젝트채팅

시작에 앞서.. (공유메모리)

일단 ConCurrentHashMap 은 자바 내부적으로 구현한 자료구조로 다중 쓰레드 환경에서 해시맵을 동일하게 쓸수있게 공유메모리에 속하게된다 그래서 웹소켓에서 클라이언트들에게 소켓을 열때 스프링이 알아서 멀티 스레드로 열게되는 것을 볼수 있고, 웹소켓에 대한 각각의 세션이 클라이언트 마다 생기는데 각각의 해당 세션을 ConcurrentHashMap에 저장할 수 있다.

그러면 세션을 for 문으로 읽어서 각자가 보낸 payload를 브로드 캐스팅해줄수 있다.

그래서 그냥 앞으로 있을 프로젝트도 ConcurrentHashMap 쓰면 장땡 아닌가? 하는 생각이었는데, 이 생각이 틀리진 않았다. → 서버 하나만 쓸 경우에는

하지만 서버를 여러개를 써야 하는 상황이면 ConcurrentHashMap으로 공유메모리를 해결하지 못하기 때문에 외부 서버의 Redis와 같은 DB를 활용하여 공유메모리를 재현해야한다.

일단 웹소켓 간단한 시연은 끝냈고,

이제 chat_id랑 user_id만들어서 필터링한 캐스팅 구현해보고

웹소켓 Config 랑 다중 쓰레드, 동기화에 대해서 좀 알아보고 문서화하면 될듯