CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·MaClien ·주식한당 ·개발한당 ·일본산당 ·자전거당 ·방탄소년당 ·안드로메당 ·야구당 ·나스당 ·노젓는당 ·소시당 ·이륜차당 ·골프당 ·디아블로당 ·클다방 ·와인마신당 ·AI당 ·레고당 ·어학당 ·위스키당 ·물고기당 ·ADHD당 ·소리당 ·키보드당 ·안경쓴당 ·바다건너당 ·스팀한당 ·리눅서당 ·가상화폐당 ·달린당 ·콘솔한당 ·땀흘린당 ·PC튜닝한당 ·창업한당 ·3D메이킹 ·X세대당 ·AI그림당 ·날아간당 ·사과시계당 ·육아당 ·배드민턴당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·갖고다닌당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·걸그룹당 ·차턴당 ·총쏜당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·IoT당 ·KARA당 ·꼬들한당 ·덕질한당 ·가죽당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·노키앙 ·적는당 ·방송한당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·여행을떠난당 ·터치패드당 ·트윗당 ·VR당 ·시계찬당 ·WebOs당 ·소셜게임한당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

개발한당

질문 Polling vs WebSocket 13

2026-08-29 20:33:20 수정일 : 2026-08-29 20:35:28 45.♡.22.164
mackey


터미널에서 키를 누르면 → 서버가 그 명령을 전달하고 → iPhone / iPad의 웹앱이 그 키를 받아 실제 동작하는 구조를 구현했는데

결과적으로는 Polling방식으로 구현을 했고


문득

WebSocket 방식으로 했으면 어떨까? 생각이 들더군요


이런 방식 구현할때 어떤게 좋을지

선배님들 생각은 어떠시나요?!


mackey 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [13]
Master_Puppets
IP 14.♡.165.86
08-30 2026-08-30 23:20:10
·
무슨 말인지 전혀 모르겠네요. 설명하는 연습이 좀 더 필요해보입니다.
mackey
IP 64.♡.36.84
09-02 2026-09-02 20:16:32 / 수정일: 2026-09-02 20:24:57
·
@Master_Puppets님 앗 그런가요 ㅎㅎ 간단하게 리모컨 -> 원하는 tv 채널 보기 정도로 이해해주시면 될 것 같습니다.
TigerBk*
IP 1.♡.105.181
08-31 2026-08-31 21:53:17
·
Polling 은 최고 비동기 처리 방식중에 1순위 입니다. 쉽다고 무시하면 안되요.
mackey
IP 64.♡.36.84
09-02 2026-09-02 20:17:15
·
@TigerBk*님 더 많은 이해도와 공부가 필요할 것 같습니다 정보 감사합니다 ! ㅎㅎ
retheviper
IP 153.♡.75.137
09-01 2026-09-01 16:46:06
·
저라면 SSE 도 검토해 보겠습니다.
mackey
IP 64.♡.36.84
09-02 2026-09-02 20:17:43
·
@retheviper님 오 sse도 검토해볼만하겠네요 감사합니다 !
yommy
IP 116.♡.185.12
09-01 2026-09-01 22:13:49 / 수정일: 2026-09-01 22:14:09
·
폰/패드에서 Polling하는 주기가 짧다면(예: 1분동안?), Polling도 좋아보입니다.
하지만, 앱의 시작부터 끝까지 Polling한다면, 배터리와 쓸데없는 네트워크 비용이 발생하니 WebSocket이 낫겠죠.
단방향이면 저도 SSE 추천합니다.
mackey
IP 64.♡.36.84
09-02 2026-09-02 20:19:26
·
@yommy님 200ms polling에 분당 300번 요청이라 실제 서버 응답이 매우 작은 편이긴 합니다 sse도 좋은 방법일 것 같네요 감사합니다 !
쩐의여왕
IP 183.♡.71.161
09-02 2026-09-02 12:06:35
·
터미널 키를 웹앱이 받아 실행하는 구조면, 어느 쪽을 쓰느냐보다 끊겼다 붙는 구간이 더 골치였습니다. iOS 웹앱은 화면 잠기거나 탭이 뒤로 가면 소켓이 조용히 죽는데, 돌아왔을 때 그 사이 눌린 키를 어떻게 할지가 남습니다. 저는 재연결하고 밀린 걸 몰아 받다가 같은 명령이 두 번 실행돼서, 결국 명령마다 순번을 붙이고 마지막으로 처리한 번호를 클라이언트가 들고 있게 바꿨습니다.

폴링은 이 부분이 다음 요청에 그냥 딸려와서 공짜로 풀리는 면이 있더군요. 키 입력이 딱 한 번만 실행돼야 하는 성격이라면 그 기준으로 골라도 될 것 같습니다.
mackey
IP 64.♡.36.84
09-02 2026-09-02 20:22:41
·
@쩐의여왕님 아 그렇겠네요 폴링은 끊겨도 다음 요청에서 이어받기 가 용이하긴한데.. sse나 websocket은?? 끊기면 다시 연결처리하는부분에대해서 고민해봐야 될문제가 있겠네요 !
쩐의여왕
IP 183.♡.71.161
09-04 2026-09-04 12:15:05
·
@mackey님 SSE는 재연결이 규격 안에 들어 있습니다. 서버가 이벤트마다 id: 를 내려주면 브라우저가 그 값을 마지막 이벤트 ID로 들고 있다가, 끊긴 뒤 다시 붙을 때 Last-Event-ID 헤더에 실어 보냅니다. 재시도 간격도 retry: 로 서버가 지정할 수 있고요. WHATWG HTML 표준의 Server-Sent Events 절에 그렇게 적혀 있습니다.

WebSocket은 RFC 6455에 그런 게 없습니다. 닫히면 닫힌 걸로 끝이고, 밀린 걸 어디서부터 다시 줄지는 애플리케이션이 직접 얹어야 합니다. 순번을 한쪽이 들고 있어야 하는 부담은 WebSocket 쪽이 더 큽니다.

고르실 때 기준이 하나 있는데, 그 키 명령이 두 번 실행돼도 괜찮은 종류인가요, 아니면 정확히 한 번이어야 하나요? 두 번 와도 되면 재연결 후 그냥 다시 밀어도 되고, 한 번이어야 하면 순번이 필수가 됩니다.
mackey
IP 64.♡.48.109
09-04 2026-09-04 20:17:55 / 수정일: 2026-09-04 20:23:26
·
@쩐의여왕님 한번이어야 하고.. /api/remote-key?clientId=...&last=${remoteLastId} / 서버에 마지막으로 받은 명령 ID를 같이 보내는 방식으로 구현 되어있습니다 ㅎㅎ
쩐의여왕
IP 183.♡.71.161
09-05 2026-09-05 12:08:02
·
@mackey님 그 방식이면 나중에 SSE 로 옮길 때 지울 코드가 대부분입니다. 마지막으로 받은 명령 ID 를 실어 보내는 그 파라미터가 하는 일이 Last-Event-ID 헤더가 하는 일과 같아서, 서버가 id: 를 내려주기 시작하면 그 값은 브라우저가 알아서 들고 다닙니다.

200ms 로 도는 GET 이라 하나 걸리는 건 캐시입니다. RFC 9111 은 명시적인 만료 헤더가 없어도 캐시가 휴리스틱으로 신선도를 매길 수 있게 두고 있고, 4.2.2 에서 쿼리 문자열이 붙은 URI 는 휴리스틱 대상에서 빼라던 옛 규정을 걷어내면서 막고 싶으면 서버가 직접 no-cache 를 보내라고 적어놨습니다. 중간에 프록시나 CDN 이 끼면 지난 응답이 그대로 돌아올 수 있습니다.

그리고 정확히 한 번이어야 한다면 자리가 하나 더 남습니다. 그 마지막 ID 를 언제 올리시나요? 키를 실행한 다음에 올리면 그 사이에 탭이 죽었을 때 다시 받아 또 실행하고, 먼저 올리면 실행 전에 죽었을 때 그 키가 통째로 사라집니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.