그누보드 연동 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('서버가 실행되었습니다.');
});
이렇게 하니깐 잘 되네요! 선우님 감사합니다.!
!-->
답변을 작성하시기 전에 로그인 해주세요.