웹 소켓 - Socket . IO 사용 시 집 고 넘 어야 할 한 가지 - Firejune 
 ` 웹 소켓 ` 
 02 2011 / 09 Socket . IO 사용 시 집 고 넘 어야 할 한 가지 
 웹 소켓 과 폴링 ( polling ) 방식 의 소켓 이 공존 하 는 Socket . IO 를 사용 해 보 면서 간과 해서 는 안 될 점 에 대해서 별도 의 포스트 로 작성 합니다 . 이전 포스트 에 작성 한 내용 이 지만 주제 와 무관 하 여 다시 작성 했 습니다 . 
 지금 까지 여러 웹 소켓 테스트 를 통해 알아낸 사실 들 중 꼭 집 고 넘어가 야 할 하나 는 폴링 방식 과 웹 소켓 ( 플래시 소켓 포함 ) 을 무분별 하 게 사용 하 면 위험 하 다는 것 입니다 . 이것 은 브라우저 에서 HTTP 요청 이 발생 하 느냐 마 느냐 의 차이 이 며 요청 이 발생 하 는 경우 클라이언트 나 서버 사이드 모두 에 적잖 은 오버헤드 를 감수 해야 합니다 . 그렇 기 때문 에 개발 하 고자 하 는 애플리케이션 이 어떠 한 빈도 로 통신 횟수 가 발생 하 는 수준 에 따라 " 폴링 방식 포함 " 또는 " 웹 소켓 방식 만 지원 " 으로 구분 해서 취급 해야 합 니 니다 . 조금 과한 예 를 들 자면 , 초 당 20 프레임 을 확보 해야 하 는 리얼타임 웹 앱 에서 폴링 방식 의 소켓 을 활성 하 는 것 은 DDoS 공격 을 스스로 구현 하 는 자살행위 나 다름없 습니다 . 
 아래 의 표 는 폴링 과 웹 소켓 을 각각 사용 하 는 애플리케이션 에서 불 필요 한 네트 웍 처리 량 으로 인한 오버헤드 를 비교 한 것 으로 Kaazing 에서 폴링 과 웹 소켓 을 비교 분석 한 자료 중 의 일부 입니다 . 
 Use case A : 1 , 000 clients receive 1 message per second : 
 Use case B : 10 , 000 clients receive 1 message per second : 
 Use case C : 100 , 000 clients receive 1 message per second : 
 덧 , 로드 밸 런 싱 으로 어찌할 만 한 수준 이 아닙니다 . 
 Read 67 , 115 times , Like what you read ? 
 2011 - 09 - 02 22 : 59 
 RT @ firejune : Socket . IO 사용 시 집 고 넘 어야 할 한 가지 firejune . com / 1698 
 Outsideris : RT @ firejune : Socket . IO 사용 시 집 고 넘 어야 할 한 가지 http : / / t . co / wvAhWqK 
 id 4 tweet : Socket . IO 사용 시 집 고 넘 어야 할 한 가지 : 웹 소켓 과 폴링 방식 의 소켓 이 공존 하 는 Socket . IO 를 사용 해 보 면서 관 과 해서 는 안 될 점 에 대해서 별도 의 포스트 로 작성 합니다 . 이전 포스트 에 . .. http : / / t . co / 0 FiiFOr 
 2011 - 09 - 05 00 : 37 
 scroogy _ choi : RT @ firejune : Socket . IO 사용 시 집 고 넘 어야 할 한 가지 http : / / t . co / wvAhWqK 
 2011 / 11 / 23 00 : 11 
 강부자 아들 
 socket . io 에서 websocket 프로토콜 만 사용 하 게 할 수 는 없 나요 ? 왠지 그런 옵션 이 있 을 것 같 은 데 알려 주 세요 . 예 를 들 어 현재 socket . io 를 사용 하 니 일부 구글 크롬 브 라우 져 에서 는 websocket 프로토콜 버전 때문 인지 websocket 이 동작 안 하 여서 XHR 로 자동 으로 넘어가 고 있 는데 , 저 는 그냥 websocket 프로토콜 만 쓰 고 싶 고 브라우저 에서 지원 안 하 면 그냥 에러 로 처리 받 고 싶 은데 방법 을 좀 알려 주 세요 
 2011 / 11 / 23 12 : 17 
 웹 소켓 만 사용 하 시 려면 서버 코드 에서 다음 처럼 작성 하 시 면 됩니다 . 
 ' websocket ' 
 2011 / 11 / 24 15 : 04 
 제 가 우선 만들 고 싶 은 것 은 두 모바일 기기 간 의 채팅 프로그램 입니다 . 
 이 와 관련 하 여 질문 이 몇 가지 더 있 는데요 . 지식인 도 아닌데 계속 질문 하 게 되 어 죄송 합니다 . 
 첫 째 는 모바일 기기 ( iPhone 혹은 iPad ) 의 슬립 모드 와 관련 된 것 입니다 . 슬립 모드 에서 는 클라이언트 가 서버 에서 보내오 는 메세지 를 받 을 수 가 없 는데 , 이 때 서버 가 클라이언트 의 disconnection 을 알 수 있 는지 여부 입니다 . disconnect 라고 판정 하 는 시점 도 애매 하 고 서버 측 disconnect 이벤트 는 발생 하 지 않 는 거 같 아서요 . 
 두 번 째 는 메세지 를 . volatile 로 보내 면 그냥 메세지 가 갔 는지 안 갔 는지 확인 을 안 하 는 건가요 ? git 페이지 에 영어 로 되 어 있 어서 해석 이 잘 안 되 서요 . 제 가 슬립 모드 가 된 아이폰 에 계속 메세지 를 emit 하 니깐 서버 가 뻣 어 버렸 는데 메세지 를 보낼 때 . volatile 를 붙여서 emit 하 니깐 서버 는 안 뻣 더라 고여 . . volatile 의 정확 한 사용법 과 의미 를 알 고 싶 습니다 . 
 세 번 째 는 제 가 슬립 모드 의 아이폰 을 다시 켜 고 사파리 브라우저 의 콘솔 을 확인 했 을 때 는 websocket frame is too long 에러 가 뜨 고 몇 초 후 에 웹 소켓 종료 에 관련 된 이벤트 를 확인 할 수 있 었 는데 ( 물론 몇 초 후 에 발생 되 었 습니다 ) 이 때 , 그 채널 에 재 접속 을 해야 하 는데 재 접속 은 어떻게 해야 하 는지 궁금 합니다 . http : / / readthedocs . org / docs / tornadio 2 / en / latest / bugs / # connect - after - disconnect 보 면은 재 접속 에 버그 가 있 고 
 저 는 프로그래머 는 아니 고 학생 이 다 보 니 이거 저거 막히 는 게 많 아서 두 서 없이 질문 하 게 되 었 습니다 . 꼭 답변 부탁 드립니다 . 
 2011 / 11 / 28 12 : 14 
 Older : 리얼타임 서버 스테이트 비주얼 라이 제이션