EH 메신저 프로젝트는 소켓 통신을 이용하여 구현합니다. 따라서 Peer와 서비스 사이에 그리고 서비스와 서비스 사이에 누가 소켓 주소를 bind하여 연결을 제공할 것인지 누가 연결을 요청할 것인지 약속합니다. 필요하면 프로토콜도 약속해야 하며 EH 메신저 프로젝트는 모든 서비스를 TCP 프로토콜을 사용할 것입니다. 이 부분은 Composite 구조 다이어그램으로 작성합시다.
먼저 Peer는 FendSVC가 약속한 소켓 주소에 연결합니다(1). FendSVC는 RegSVC(2)와 LogSVC(3), StsSVC(4)가 약속한 소켓 주소에 연결합니다. 그리고 RegSVC, LogSVC, StsSVC는 DbmSVC가 약속한 소켓 주소에 연결합니다(5).
다른 Peer의 로긴 계정 정보는 StsSVC에서 Peer에서 제공한 소켓 주소에 연결합니다(6). 이 정보는 로긴 성공하면 Peer에서 소켓을 bind하고 첫 번째 KeepAlive 메시지에 전달하기로 합시다.
마지막으로 Peer와 Peer 사이에 숏 메시지(7)와 파일 전송(8)에도 필요합니다. 이 때는 보내는 측이 수신할 측에 연결 요청하기로 합시다. 이 부분도 로긴 성공 후에 Peer에서 소켓을 bind하고 첫 번째 KeepAlive 메시지에 전달하기로 합시다.
다음은 EH 메신저의 소켓 정보입니다.
번호 | 소켓 클라이언트 | 소켓 서버 | 설명 |
1 | Peer | FendSVC | Peer의 서비스 요청/응답 |
2 | FendSVC | RegSVC | Peer의 가입 서비스 요청 전달 및 가입 서비스의 응답 전달 |
3 | FendSVC | LogSVC | Peer의 로그 서비스 요청 전달 및 로그 서비스의 응답 전달 |
4 | FendSVC | StsSVC | Peer의 상태 서비스 요청 전달 및 상태 서비스의 응답 전달 |
5 | RegSVC,LogSVC,StsSVC | DbmSVC | 비지니스 서비스의 데이터 추가, 검색 요청 및 응답 |
6 | StsSVC | Peer | 다른 Peer의 계정 정보 전달 |
7 | Peer(전송) | Peer(수신) | 숏 메시지 전송 |
8 | Peer(전송) | Peer(수신) | 파일 전송 |