1. 일단 필요하리라 생각되는 프로토콜로는...
1) Log in/out
2) Keep Alive
일단 이 정도가 가장 기본적인 연결 관리를 위해 필요할거 같구요...
1:1 대화 시작을 위한 프로토콜도 있어야 겠죠.
그냥 상대방의 IP와 포트를 요청하는 것이라서 UserInfo라고 임시로 해버렸습니다. ^^
3) UserInfoReq/UserInfoAns
2. 구체적인 내용으로는...
1) 메시지 길이는 제한이 없습니다.
2) 모든 프로토콜 메시지는 고유한 32비트 ID를 가지고, 이 ID가 메시지의 가장 앞에 위치합니다.
3) 16비트 이상의 모든 자료형(short, int, int64, float, double, ...)은 network byte order로 변환하여 통신합니다.
4) Login/out 메시지는 특별히 보안 관련 기능이 들어갈 것입니다.
따라서 ID, PWD 필드 외에 서버와 클라이언트가 랜덤으로 생성한 키를 교환하는
방식을 이용하도록 하겠습니다. 자세한건 프로토콜 설계가 진행이 되면 문서로 남기도록 하죠.
5) Keep Alive 간격은 1.5초 정도가 적당할거 같구요 두 번 이상. 즉 3초 이상 응답이 없는
클라이언트는 연결을 강제로 끊도록 하겠습니다.
|
메신저라는 특성때문에 게임처럼 급박하게 진행되지 않아도 됩니다.
대략 15초~20초간 응답이 없을경우에만 커넥션 종료를 해주시기 바랍니다.