강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

황경훈님의 프로필 이미지
황경훈

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

사진 공유 같은게 가능한가요?

작성

·

131

0

강의 잘보고 있습니다! 감사합니다 이번에 채팅 구현 전에 한가지 궁금한것 이 있다면 유저가 직접 찍어 올린 사진을 실시간적으로 다른 유저들에게 보여주게 할려면 웹서버로 접근해서 가져오는건가요? 예를들면 카톡에서  자기 휴대폰에 저장된 이미지를 어떤 방식으로 다른 대상에게 보여주는지 궁금합니다.

답변 1

3

Rookiss님의 프로필 이미지
Rookiss
지식공유자

안녕하세요,
사진이라고 딱히 특별한 것은 없고, 특정 포맷을 가진 파일이니
결국 질문주신 부분은 <파일을 어떤 방식으로 주고 받을까?>로 요약할 수 있습니다.

간단히 말하면 서버에도 두 종류가 있는데
이번 단원에서 배우는 연결 방식의 서버 (Stateful)와 추후에 나올 웹 서버(Stateless)가 있습니다.

연결 방식의 서버는 실시간으로 쌍방향 통신이 가능하기 때문에,
특정 유저가 보낸 파일을 그냥 다른 유저한테 전달만 하면 끝납니다.
심지어 그냥 파일 사이즈와 파일 내용을 binary로 밀어넣어서 송수신하면 됩니다.
그러면 받은 쪽에서는 binary 내용을 받아서 새로운 파일을 만들고, 내용을 복붙하면 되겠죠.
리니지1의 혈맹 마크가 이런 경우라고 생각할 수 있습니다.
연결 방식의 서버는, 서버 쪽에서 필요할 때 클라한테 정보를 보낼 수 있다는 장점은 있지만,
별다른 정보 송수신이 필요없더라도 항상 연결을 유지시켜줘야 하는 번거로움 + 성능 이슈가 있습니다.

웹 서버는 양방향 연결된 것이 아니라 클라가 질의를 하면 서버가 응답만 할 수 있다고 보시면 됩니다.
따라서 어떤 유저가 실시간으로 보낸 파일를 바로 다른 유저에게 전달하긴 힘들죠.
이런 경우 폴링 방식으로  [혹시 나한테 온 새로운 정보가 있을까?]를
주기적으로 웹서버에 질의를 하는 방식으로 처리를 하게 됩니다.

통상적인 개념으로 생각해보면 카톡은 웹 기반으로 만들었을 것 같은데
카카오에서 근무한 적이 없으니 100% 정확하게는 말씀드릴 수는 없겠네요.

2020/10/07 업데이트:
물론 게임이 아닌 모바일 앱이라면 푸시 서버를 이용해서 새 카톡 메시지 여부를 먼저 통보 받는게 더 현명하긴 하겠네요!
그리고 사진을 메모리에 들고 있기엔 너무나도 개수가 많으니, 
AWS S3와 같이 별도의 서버에서 들고 있지 않을까? 라는 예상을 해봅니다 :)

감사합니다.

황경훈님의 프로필 이미지
황경훈

작성한 질문수

질문하기