(одноранговый js) Я пытаюсь заставить свой одноранговый js сервер работать через nginx / ssl, но он просто не работает - PullRequest
0 голосов
/ 06 августа 2020

Я не уверен, в чем проблема Сайт (в случае, если консоль пригодится): 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

Если вам нужна дополнительная информация, спрашивайте, я застрял на пару дней, и это все больше и больше разочаровывает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...