김보안의 블로깅
  • 🏠 Home
  • 📚 Project
    • Blockchain
      • 🎦 PickMe
      • 🎦 IoTC
      • 🎦 Blackchain
      • 📃 Gemology
      • 🎦 PickMe
      • 🎦 PickMe
    • AI
      • 👋 A.I. Dream Reader
      • 🎦 A.I. Dream Reader
    • Security
      • 🎦 SNAC
    • Education
      • 🎦 Smart Lecture
  • 🤸‍♂ Hobby
    • Music
      • Violin
      • Guitar
      • Piano
      • Drum
    • Flower
      • Flower Certificate
    • Sport
      • Ski
      • Skateboard
      • Golf
      • Boxing

2013년 11월 14일 목요일

[Node.js] Android-client not handshaken client should reconnect

 SecureKim     오전 1:08     android, client not handshaken client should reconnect, JAVA, Node.js     5 comments   

Socket.io



이 문제가 또 저를 붙잡았습니다.

예전에 자바스크립트로 코딩할 때, 알 수 없는 이유로 클라이언트 측에서

엄청나게 많은 reconnect를 요구하는 바람에 노드 서버가 아무것도 못하고

뻗어버리는 현상이 있었는데요

그때는 자바스크립트 측에 강제로 횟수 제한을 두어서 계속 연결 시도를 못하게 했었습니다.

이번에는 클라이언트가 자바인 경우인데요.

많은 Reconnect를 요구하는 것이 아니라 제대로 연결이 안됩니다.

게다가 될때도 있고 안될때도 있어서 매우 혼란스러운 상황이었습니다.

일단 로그는 다음과 같습니다.

서버측 : client not handshaken client should reconnect
클라이언트측 : IOCallback() 의 onError 작동

해결은 다음과 같이 했습니다.
// 사용 : https://github.com/Gottox/socket.io-java-client

static public int socketCnt=0; // 사용될 전역변수입니다.
static Thread tRecv;

public static void initialize(){
    tRecv = new Thread() {
    public void run() {
    try {
     socket = new SocketIO("http://***:***/");
     IOCallback IOC=new IOCallback() {
      @Override
      ...

      @Override
       public void onError(SocketIOException socketIOException) {
         System.out.println("an Error occured");
                   //그러니까 요지는, 에러가 나면 다시 연결을 시도 한다는 겁니다.
                   //횟수 제한을 두도록 했습니다.
         try {
  if(socketCnt<10){
  socket = new SocketIO("http://***:***/");
  socket.connect(this);
  socketCnt++;
  }
 } catch (MalformedURLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 socketIOException.printStackTrace();
 }
     @Override
     ...
     socket.connect(IOC);
 } catch (Exception e1) {
 // TODO Auto-generated catch block
 e1.printStackTrace();
 }
     }
            
   };
   tRecv.start();
 try {
 tRecv.join();
 } catch (InterruptedException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
}
일단은 해결 된 듯 보이지만 시간이 지나봐야 알 것 같네요ㅋㅋ
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
이메일로 전송BlogThis!X에 공유Facebook에서 공유
최근 게시물 이전 게시물 홈

댓글 5개:

  1. Unknown2014년 4월 24일 오전 9:52

    좋은 정보네요. 구글에서 해답을 못 찾고 있는데 저는 socket 옵션을 "force new connection": true, "reconnect":true, 으로 설정했는데 위와 같은 에러가 발생하고 있네요. 저도 에러가 발생할 때 new socket.io으로 처리해 봐야 겠습니다.

    답글삭제
    답글
    1. SecureKim2014년 4월 24일 오후 6:06

      네~감사해요. 또 들러주세요 ^^

      삭제
      답글
        답글
    2. 답글
  2. Unknown2014년 11월 16일 오전 2:21

    안녕하세요 전 학부생 초보 프로그래머 입니다.
    저도 똑같은 gottox 분의 라이브러리로 웹소켓을 연결하고 싶은데 혹시 실례가 안된다면 안드로이드 클라이언트 부분
    공유해주실수 있으신가요? 몇일동안 계속하고있는데 남들은 handshaking 부분에서 오류가 난다는데 너무 초보라 거기까지도 못가고 어떻게 하는지도 찾아봐도 잘 안나오네요 죽고싶네요 도와주세요...

    답글삭제
    답글
      답글
  3. Unknown2014년 11월 16일 오전 2:22

    안녕하세요 전 학부생 초보 프로그래머 입니다.
    저도 똑같은 gottox 분의 라이브러리로 웹소켓을 연결하고 싶은데 혹시 실례가 안된다면 안드로이드 클라이언트 부분
    공유해주실수 있으신가요? 몇일동안 계속하고있는데 남들은 handshaking 부분에서 오류가 난다는데 너무 초보라 거기까지도 못가고 어떻게 하는지도 찾아봐도 잘 안나오네요 죽고싶네요 도와주세요...

    답글삭제
    답글
    1. SecureKim2014년 11월 28일 오후 10:21

      제가 너무 늦진 않았나요?ㅜㅠ 저는 안드로이드 클라이언트 부분을 gottox라이브러리를 쓰지 않고 다른 라이브러리를 사용했는데요, 요청시 보내드리겠습니다. 그리고 혹시 여기까지 해결하셨다면 handshaking 오류는 Node.js Socket.io 라이브러리의 버젼이 바뀌어서 그런것이므로 낮은 버젼의 socket.io 라이브러리를 사용하시면 됩니다.

      삭제
      답글
        답글
    2. 답글
댓글 추가
더 로드하기...

페이지

  • 홈
  • Hobby

Categories

  • AI
  • AWS
  • Blockchain
  • Hardware
  • Javascript
  • Node.js
  • Plasma
  • Security
  • Study
  • Video
  • android
  • mysql
  • review
  • windows

Popular Posts

  • 블랙보드 강의 녹화 영상 다운로드 가능한 방법 (노설치)
    별도의 설치도 필요 없고 아주 쉽습니다. 구글 크롬브라우저 에서 블랙보드 녹화 영상에  다운로드 가능한 메뉴가 나오게 하는 코드입니다.  먼저 블랙보드 강의자료에 입장하고, 재생 버튼을 클릭 하지 않은 상태로 F12 를 입력합니다. 재생을 클릭하지 마...
  • 다빈치리졸브로 영상의 음성 보정 (잡음 노이즈 없애기)
      잡음 없애는 방법 1. 음악 쪽 들어가서 음악에서 소스 우클릭 - Normalize Audio Levels 2. 우측의 Mixer에서 Dynamics 더블클릭, Effects아래 +누르고 Metering에 Meter 그럼 아래처럼 나오는데  Gat...
  • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)
    대기업에 입사하면 장단점이 있는데, 단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다. 특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다. 그런데 문...

Blog Archive

  • ►  2024 (2)
    • ►  11월 (2)
  • ►  2023 (2)
    • ►  10월 (1)
    • ►  1월 (1)
  • ►  2022 (10)
    • ►  12월 (1)
    • ►  11월 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  6월 (2)
    • ►  3월 (2)
  • ►  2021 (9)
    • ►  12월 (3)
    • ►  11월 (1)
    • ►  6월 (1)
    • ►  5월 (2)
    • ►  4월 (2)
  • ►  2020 (12)
    • ►  10월 (1)
    • ►  9월 (2)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (5)
    • ►  4월 (1)
    • ►  2월 (1)
  • ►  2019 (14)
    • ►  10월 (2)
    • ►  7월 (1)
    • ►  3월 (4)
    • ►  2월 (2)
    • ►  1월 (5)
  • ►  2018 (14)
    • ►  12월 (2)
    • ►  11월 (4)
    • ►  10월 (1)
    • ►  8월 (2)
    • ►  5월 (4)
    • ►  1월 (1)
  • ►  2017 (12)
    • ►  10월 (2)
    • ►  9월 (9)
    • ►  5월 (1)
  • ►  2016 (8)
    • ►  10월 (2)
    • ►  8월 (1)
    • ►  6월 (1)
    • ►  1월 (4)
  • ►  2015 (6)
    • ►  12월 (3)
    • ►  10월 (1)
    • ►  6월 (1)
    • ►  5월 (1)
  • ►  2014 (10)
    • ►  11월 (1)
    • ►  9월 (1)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (3)
    • ►  4월 (1)
    • ►  3월 (2)
  • ▼  2013 (28)
    • ►  12월 (3)
    • ▼  11월 (6)
      • [Ucrew] Ativ Tab 3 사용 후기
      • [Node.js] MySQL 커넥션이 빠르게 끊어질 때
      • [Node.js] Android-client not handshaken client sho...
      • [CentOS] Node Forever
      • [CentOS] Security (보안 설정)
      • [Node.js] Redis 의 List 이용하기
    • ►  10월 (6)
    • ►  9월 (6)
    • ►  8월 (1)
    • ►  7월 (3)
    • ►  6월 (3)

구독

글
Atom
글
댓글
Atom
댓글

로드 중입니다...

각오

직접 해보지 않은 것은 포스팅 하지 않겠습니다.

Copyright © 김보안의 블로깅 | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates