처리기 하나로는 부족해
에코 서버는 연결한 클라이언트 하나와만 대화해. 채팅, 전체 전송, 접속 상태처럼 더 흥미로운 기능은 서버가 여러 연결을 동시에 알아야 하지. 이때 연결 관리자 를 둬. 열린 소켓을 추적하면서 방, 사용자, 채널처럼 애플리케이션이 중요하게 여기는 값으로 찾을 수 있게 하는 작은 단일 객체야.
가장 작은 관리자
방 이름을 WebSocket 객체 집합에 연결하는 딕셔너리만으로 대부분의 상황을 처리할 수 있어. 개인 메시지가 필요하면 사용자 ID 추적을 더하고, 관측 정보가 필요하면 연결 시각이나 IP 같은 메타데이터를 더해. 필요가 생길 때마다 점진적으로 키우면 돼.
전체 전송 중 죽은 연결 처리하기
방의 연결 집합을 순회할 때는 네트워크 단절을 아직 감지하지 못한 반쯤 죽은 소켓이 섞여 있을 수 있어. 모든 send 호출을 감싸고, 죽은 참조를 모은 다음, 반복이 끝난 뒤 제거해. 순회 중인 집합을 바로 바꾸면 안 돼.