그누보드 연동 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 포인트
5년 전
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://www.it-swarm.dev/ko/ssl/nodejs-ssl%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-socketio/972298686/
로그인 후 평가할 수 있습니다
답변에 대한 댓글 2개
�
우성짱
5년 전
�
우성짱
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 도 됩니다!
그리고 도커의 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]
프로토콜 에러 ㅠㅠ
net::ERR_SSL_PROTOCOL_ERROR
[/code]
프로토콜 에러 ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
내일 다시 설치해보려구요 .. ㅠㅠ