그누보드 연동 Nodejs 실시간 채팅 SSL 적용 문의입니다.

그누보드 연동 Nodejs 실시간 채팅 SSL 적용 문의입니다.

QA

그누보드 연동 Nodejs 실시간 채팅 SSL 적용 문의입니다.

본문


const port = 8081;
const app = require('express');
const fs = require('fs');
const path = require('path');
const http = require('http').Server(app);
const io = require('socket.io')(http);
const HTTPS = require('https');
try {
    const option = {
      ca: fs.readFileSync('/etc/nginx/ssl/fullchain.pem'),
      key: fs.readFileSync(path.resolve(process.cwd(), '/etc/nginx/ssl/privkey.pem'), 'utf8').toString(),
      cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/nginx/ssl/cert.pem'), 'utf8').toString(),
    };  
    HTTPS.createServer(option, app).listen(8082, () => {
      console.log(`[HTTPS] Nodejs Server is started on port 8082`);
    });
  } catch (error) {
    console.error('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
    console.warn(error);
  }
var mysql = require('mysql');
var mysql = mysql.createConnection({
    host: '127.0.0.1',
    user : 'xxxx',
    password : 'xxxx',
    insecureAuth: true,
    database: 'gnuboard'
});
mysql.connect();
http.listen(port, () => {
    console.log('서버가 실행되었습니다.');
});

 

위와 같이 작업하고

 


var chat = io.connect("wss://domain.com:8081/chat?userId="+userId);

 

위와 같이 접근하니 안되는군요 ㅠㅠ SSL 적용 안하면 잘 되는데, 적용하면 안되니 ㅠㅠ

 

8081 8082 둘다 열려있는데, 어떻게 작업해주는게 좋을까요?

이 질문에 댓글 쓰기 :

답변 4

var chat = io.connect("wss:https://domain.com:8081/chat?userId="+userId, { secure: true });

이렇게 앞에 https://, secure: true 시도해도 안되시나요??

https://www.it-swarm.dev/ko/ssl/nodejs-ssl%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-socketio/972298686/

어려운 것을 하시네요

비슷한 것을 찾아보니

 

https://stackoverflow.com/questions/22453782/nodejs-http-and-https-over-same-port

 

참조하세요


const port = 8080;
 
var fs = require('fs');
var privateKey = fs.readFileSync('/경로/privkey.pem')
var certificate = fs.readFileSync('/경로/fullchain.pem');
var credentials = {key: privateKey, cert: certificate};
const app = require('express');
var https = require('https').Server(credentials,app);
const io = require('socket.io')(https);
var mysql = require('mysql');
var mysql = mysql.createConnection({
    host: 'db',
    user : '1234',
    password : '1234',
    insecureAuth: true,
    database: 'gnuboard'
});
mysql.connect();
 
https.listen(port, () => {
    console.log('서버가 실행되었습니다.');
});

 

이거예요!

 

잘 됩니다!


const port = 8080;
 
var fs = require('fs');
var privateKey = fs.readFileSync('/경로/privkey.pem')
var certificate = fs.readFileSync('/경로/fullchain.pem');
var credentials = {key: privateKey, cert: certificate};
const app = require('express');
var https = require('https').Server(credentials,app);
const io = require('socket.io')(https);
var mysql = require('mysql');
var mysql = mysql.createConnection({
    host: 'db',
    user : '1234',
    password : '1234',
    insecureAuth: true,
    database: 'gnuboard'
});
mysql.connect();
 
https.listen(port, () => {
    console.log('서버가 실행되었습니다.');
});

 

이렇게 하니깐 잘 되네요! 선우님 감사합니다.!

답변을 작성하시기 전에 로그인 해주세요.
전체 345
QA 내용 검색
filter #ssl ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT