[iOS] SocketIO - 2

강치우·2024년 5월 30일
0

Socket 통신

목록 보기
2/2

이전 글 에서 이어지는 내용입니다.

저번 글에서는 소켓통신의 이론에 대해서 다뤄보았다면, 이번 글에서는 소켓통신을 iOS에서 어떻게 다루는지 알아보도록 합시다.


SocketIO

SocketIO는 websocket 프로토콜을 지원하는 네트워킹 라이브러리입니다.

websocket 프로토콜이란 서버와 브라우저 사이에 전이중 및 지연이 낮은 채널을 제공해주는 통신 프로토콜입니다.

비동기 방식이며 실시간으로 간단하게 데이터를 주고받을 수 있게 만든 라이브러리입니다.

서버는 대표적으로 Node.js를 지원해준다고 합니다.

SocketIO는 TCP 연결을 유지하고 있어 사용자의 배터리를 많이 소모할 수도 있다고 공식 문서에 적혀 있습니다.


Swift SocektIO 선택한 이유

앞서 말씀 드렸다시피 백엔드 분의 요청으로 채팅을 소켓통신으로 개발하기 위해 소켓통신을 알아보는 시간이였습니다.

채팅 기능에서 단순히 서버를 연결하지 않고 SocketIO를 사용한 이유는 무엇일까요?


채팅은 말 그대로 실시간으로 통신이 되어야 합니다.

사진과 같이 매번 데이터를 받아올 때마다 API 호출 없이 클라이언트1 <-> 서버 <-> 클라이언트2가 서로 연결되어 있어야합니다.

http 통신은 비연결성 단방향 통신이므로 클라이언트가 서버에 응답을 요청하고 응답값을 받았을 때 연결이 끊어지게 됩니다.

실시간 채팅 기능을 위해선 데이터를 받아올 때마다 클라이언트가 서버에 요청을 보내는 것이 아니라 (단방향)
서버에서도 데이터를 클라이언트가 요청한 시점 외에도 자체적으로 전달해줄 수 있어야 합니다. (양방향)

메시지의 데이터가 유실되면 안 되니 신뢰성이 높고 데이터가 유실되지 않는 TCP를 사용하는 것이 적합하다고 생각해서 선택하게 되었습니다.

profile
자허블을 좀 더 좋아하긴 합니다.

0개의 댓글