테스트 사이트 - 개발 중인 베타 버전입니다

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

우성짱 5년 전 조회 3,490

</p>

<p>const port = 8081;</p>

<p>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();</p>

<p>http.listen(port, () => {

    console.log('서버가 실행되었습니다.');

});</p>

<p>

 

위와 같이 작업하고

 

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

 

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

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트

답변에 대한 댓글 2개

우성짱
5년 전
app.js 문제인 듯 합니다.

내일 다시 설치해보려구요 .. ㅠㅠ
우성짱
5년 전
이 문제는 아니었지만 채택합니다 ㅎㅎ

댓글을 작성하려면 로그인이 필요합니다.

5년 전

</p>

<p>const port = 8080;</p>

<p> </p>

<p>var fs = require('fs');</p>

<p>var privateKey = fs.readFileSync('/경로/privkey.pem')</p>

<p>var certificate = fs.readFileSync('/경로/fullchain.pem');</p>

<p>var credentials = {key: privateKey, cert: certificate};</p>

<p>const app = require('express');</p>

<p>var https = require('https').Server(credentials,app);</p>

<p>const io = require('socket.io')(https);</p>

<p>var mysql = require('mysql');</p>

<p>var mysql = mysql.createConnection({</p>

<p>    host: 'db',</p>

<p>    user : '1234',</p>

<p>    password : '1234',</p>

<p>    insecureAuth: true,</p>

<p>    database: 'gnuboard'</p>

<p>});</p>

<p>mysql.connect();</p>

<p> </p>

<p>https.listen(port, () => {</p>

<p>    console.log('서버가 실행되었습니다.');</p>

<p>});</p>

<p>

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

우성짱
5년 전
인증서 경로는 절대경로 상대경로 다 잘됩니다.

그리고 도커의 node:alpine 도 됩니다!

댓글을 작성하려면 로그인이 필요합니다.

5년 전

어려운 것을 하시네요

비슷한 것을 찾아보니

 

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

 

참조하세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

우성짱
5년 전
넵.. 뭔가 한끗 차이인데.. 좀더 찾아보고 있습니다.

댓글을 작성하려면 로그인이 필요합니다.

5년 전

</p>

<p>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('서버가 실행되었습니다.');

});</p>

<p>

 

이거예요!

 

잘 됩니다!

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

우성짱
5년 전
[code]
net::ERR_SSL_PROTOCOL_ERROR
[/code]

프로토콜 에러 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인