Я не уверен, в чем проблема Сайт (в случае, если консоль пригодится): https://ale-bot.xyz мой nginx файл конфигурации веб-сайта:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ale-bot.xyz;
root /var/www/ale-bot.xyz/;
# SSL
ssl_certificate /etc/letsencrypt/live/ale-bot.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ale-bot.xyz/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/ale-bot.xyz/chain.pem;
# security
include nginxconfig.io/security.conf;
# logging
access_log /var/log/nginx/ale-bot.xyz.access.log;
error_log /var/log/nginx/ale-bot.xyz.error.log warn;
location /test {
return 200 'ok';
}
# reverse proxy
location / {
proxy_pass http://127.0.0.1:8080;
include nginxconfig.io/proxy.conf;
}
location /peer/:room {
proxy_pass http://127.0.0.1:9000;
}
# additional config
include nginxconfig.io/general.conf;
}
# subdomains redirect
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name *.ale-bot.xyz;
# SSL
ssl_certificate /etc/letsencrypt/live/ale-bot.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ale-bot.xyz/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/ale-bot.xyz/chain.pem;
return 301 https://ale-bot.xyz$request_uri;
location /test {
return 200 'ok';
}
}
# HTTP redirect
server {
listen 80;
listen [::]:80;
server_name .ale-bot.xyz;
include nginxconfig.io/letsencrypt.conf;
location / {
return 301 https://ale-bot.xyz$request_uri;
}
location /test {
return 200 'ok';
}
}
и мой сервер. js файл ...
const express = require('express')
const app = express()
const server = require('http').Server(app)
const io = require('socket.io')(server)
const port = 8080
const { v4: roomID } = require('uuid')
const connections = new Map()
const fs = require('fs')
const { PeerServer } = require('peer')
app.set('view-engine', 'ejs')
app.use(express.static('public'), express.urlencoded({ extended: false }))
app.get('/', (req, res) => {
res.render('welcome.ejs')
})
app.post('/finding_keys', (req, res) => {
const { input } = req.body
if (!input || !connections.get(input)) {
res.status(200)
return res.redirect('/')
} else {
res.redirect('/peer/'+input)
}
})
app.get('/unlocking_door', (req, res) => {
res.redirect(`/peer/${roomID()}`)
})
app.get('/peer/:room', (req, res) => {
res.setHeader('content-type', 'text/html');
res.render('room.ejs', { roomID: req.params.room })
})
io.on('connection', socket => {
socket.on('join-room', (roomID, userID) => {
socket.join(roomID)
socket.to(roomID).broadcast.emit('user-connected', userID)
connections.set(roomID, true)
socket.on('disconnect', () => {
socket.to(roomID).broadcast.emit('user-disconnect', userID)
})
})
})
server.listen(port, () => { console.log(`listening on port ${port}`) })
мой скрипт. js файл:
const socket = io('/');
const videoGrid = document.getElementById('video-grid');
const peer = new Peer({
port: 9000,
path: '/peer/:room',
proxied: true
});
const myVideo = document.createElement('video');
myVideo.muted = true;
const peers = {}
navigator.mediaDevices.getUserMedia({
video: true,
audio: true
}).then(stream => {
addVidStream(myVideo, stream)
peer.on('call', call => {
call.answer(stream)
const video = document.createElement('video')
call.on('stream', uStream => {
addVidStream(video, uStream)
})
})
socket.on('user-connected', userID => {
connectToUser(userID, stream)
})
})
socket.on('user-disconnect', userID => {
if (peers[userID]) peers[userID].close()
})
peer.on('open', ID => {
socket.emit('join-room', connection.IDs.room, ID);
});
function connectToUser(userID, stream) {
const call = peer.call(userID, stream)
const video = document.createElement('video')
call.on('stream', uStream => {
addVidStream(video, uStream)
})
call.on('close', () => {
video.remove()
})
peers[userID] = call
}
function addVidStream(video, stream) {
video.srcObject = stream
video.addEventListener('loadedmetadata', () => {
video.play()
})
videoGrid.append(video)
}
И я запускаю сервер с консоли следующим образом:
peerjs --port 9000 --path /peer/:room --proxied true
Если вам нужна дополнительная информация, спрашивайте, я застрял на пару дней, и это все больше и больше разочаровывает для меня.