webRTC 를 이용하여 비디오 채팅방을 만들어보도록 하겠습니다.
webRTC 는 https 이용해야 하기 때문에 node exporess 에서 SSL 적용을 해줘야 합니다.
최종화면
기본적인 SSL
ssl_server.js
// Dependencies
const fs = require('fs');
const http = require('http');
const https = require('https');
const express = require('express');
const app = express();
// Certificate 인증서 경로
const privateKey = fs.readFileSync('/etc/httpd/ssl/xxx.com_2022.key', 'utf8');
const certificate = fs.readFileSync('/etc/httpd/ssl/xxx.com_2022.crt', 'utf8');
const credentials = {
key: privateKey,
cert: certificate,
};
app.use((req, res) => {
res.send('Hello there 222222!');
});
// Starting both http & https servers
const httpServer = http.createServer(app);
const httpsServer = https.createServer(credentials, app);
httpsServer.listen(8443, () => {
console.log('HTTPS Server running on port 8443');
});
실제 사용할 server.js
SSL 사용하기 위해 8443 포트를 사용한다. (기존에 아파치가 443 포트 사용하고 있음)
const fs = require('fs');
const https = require('https');
const express = require("express");
const app = express();
const { v4: uuidv4 } = require("uuid");
app.set("view engine", "ejs");
// Certificate 인증서 경로
const privateKey = fs.readFileSync('/etc/httpd/ssl/xxx.com_2022.key', 'utf8');
const certificate = fs.readFileSync('/etc/httpd/ssl/xxx.com_2022.crt', 'utf8');
const credentials = {
key: privateKey,
cert: certificate,
};
const server = https.createServer(credentials, app);
const io = require("socket.io")(server, {
cors: {
origin: '*'
}
});
const { ExpressPeerServer } = require("peer");
const opinions = {
debug: true,
}
app.use("/peerjs", ExpressPeerServer(server, opinions));
app.use(express.static("public"));
app.get("/", (req, res) => {
res.redirect(`/${uuidv4()}`);
});
app.get("/:room", (req, res) => {
res.render("room", { roomId: req.params.room });
});
io.on("connection", (socket) => {
socket.on("join-room", (roomId, userId, userName) => {
socket.join(roomId);
setTimeout(()=>{
socket.to(roomId).broadcast.emit("user-connected", userId);
}, 1000)
socket.on("message", (message) => {
io.to(roomId).emit("createMessage", message, userName);
});
});
});
server.listen(process.env.PORT || 8443);
나머지는 https://github.com/itstaranarora/video-chat-v1 소스 활용합니다.
public/script.js 아래부분은 server.js 와 동기화 해야함
var peer = new Peer({
host: 'xxx.com',
port: 8443,
참고자료
https://github.com/itstaranarora/video-chat-v1
'프로그래밍 > Js' 카테고리의 다른 글
방법1 WebRTC Socket.io + Node.js + turn 임대 서버 이용방법 (1차완료) (0) | 2023.02.22 |
---|---|
webRTC 카메라/오디오 권한 획득 기본 샘플 (0) | 2023.02.21 |
vue3 에 tradingview 차트 연동 (소스추가) (0) | 2023.01.19 |
vue3 Composition API 에서 JS plugin 추가 하기 (0) | 2023.01.17 |
vue3 Composition API 에서 jQuery 사용하기 (0) | 2023.01.17 |