개발 Q&A

제목 실시간 알림 개발 중에 궁금한 사항이 생겨 질문 드립니다.
카테고리 서버
글쓴이 Densetsu 작성시각 2018/04/25 15:12:54
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 11414   RSS

안녕하세요 ^^

열심히 눈팅만 하다가 질문이 있어 모처럼 글 작성하게 되었습니다.

실시간 알림기능 개발 중에 궁금한 부분 (사실은 막히는 부분..) 이 있어 질문 드리게 되었습니다.

개발 환경은 nodejs + socket.io + redis + mysql 입니다.

개발 방식은 아래와 같습니다.

  • <Client> 브라우저에서 http://[도메인]/socket 이런식으로 접근
  • <Client> 해당 페이지에서 socket script 연결 후 io.connect(//[도메인]:30001) 방식으로 사용 (http, https 대응되도록 설정)
  • <Server> nodejs 서버를 30001 (로컬은 3000번) 포트를 사용 / express 를 이용
  • <Server> 상단에 대략 이런식으로 선언해서 사용
    var express = require('express');
    var path = require('path');
    var mysql = require('mysql');
    var fs = require('fs');
    
    var app = express();
    var server = app.listen(30001);
    var io = require('socket.io').listen(server);
    var redis = require('socket.io-redis');
  • <Server> 로컬, 개발 모두 포트는 열려 있습니다.

 

여기서! 제 질문은!

로컬에서 테스트 할 때는 매우 잘된다는 것입니다. 

로컬에서 가상도메인을 설정하여 테스트를 했을 때 문제가 전혀 없었습니다. (localhost.com 이런식으로 셋팅하여 테스트)

하지만.. 개발서버에 적용시 문제가 발생하였습니다.

로컬과 개발이 다른점은.. 로컬은 http, 개발은 https 통신을 한다는 점입니다.

에러도 failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR 이렇게 나고 있습니다.

이에, 개발서버에서 테스트 해본 부분은

  • io.connect 선언에서 [도메인] 부분을 localhost 로 변경하여 테스트 (failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED 에러로 바뀜..)
  • [도메인], localhost 둘다 io.connect 옵션에 {secure: true} 해줬음 (에러는 그대로..)
  • io.connect // 이 부분을 강제로 http:// 로 변경 (https 와 http 가 안 맞는다고 오류)
  • nodejs 서버에 인증서 연동 ([도메인] 에 사용하는 인증서 and openssl 로 새로 인증 받았는데도.. 둘다 동작 안함)
    • ​대략 이런식으로 했음
      var ssl_option = {
          key  : fs.readFileSync('key.pem')
          , cert : fs.readFileSync('cert.pem')
      };
      
      var app = express();
      var server = app.listen(30001, ssl_option);
      
  • express 쪽이 문제인것 같아 https 로 선언해서도 해봄
  • <질문> https 는 443 을 쓰고 있고, nodejs 는 https 에 30001 을 쓰는게 문제가 될 수 있을까요??

이것들 말고도 이것저것 해본거 같은데.. 의심스러운 부분들만 이래저래 적어봤습니다 ^^;

혹, 비슷한 경험을 하셨던 분이나 더 해볼만한 것들이 있을까요?

선배님들의 조언 부탁 드리겠습니다. 긴글 읽어주셔서 감사 드립니다. (__)

 

 다음글 Firebase의 Firestore 관련 질문입니다.
 이전글 이미지를 세션에 저장해놨다가 사용하는 방법을 물어보고싶... (5)

댓글

샤오란 / 2018/04/26 09:44:25 / 추천 0

방화벽 체크!

인증서 체크!

Densetsu / 2018/04/26 11:28:05 / 추천 0

//샤오란

답변 감사 드립니다 ^^

역시.. 고수님들의 조언은.. 무시무시합니당..

기본적인 것 부터 다시 체크했습니다.

방화벽 포트를 열어서 접근도 되길래 별 문제 없는 줄 알았더니..

스위치 허브 단에서 30001 번 포트로 넘어오면 다른 서버에 접근하게 설정해 놓았다고 하네요 -_-; 에혀..

하고많은 포트중에 그걸 쓰다니.. ㅠ 다른 포트로 연결하니 잘되네요 ㅎㅎ

다시 한번 감사 드립니다!