Я не могу получать или отправлять видеопоток в браузере Safari, используя peerjs Webrtc - PullRequest
0 голосов
/ 22 февраля 2019

Я настроил пример, который они используют для peerjs, который хорошо работает на моем компьютере для chrome, но у меня есть ipad pro с safari v12, он только дает мне локальный поток, но не отправляет ответ отправителю peer назад

это мой клиент отправителя

const peer = new Peer('sender', { host: '100.0.0.98', port: 9000, path: '/',debug: 3 })
var call = document.getElementById('call');
call.addEventListener('click', startChat);


function startChat (){
    navigator.mediaDevices.getUserMedia({
        video: true
    }).then(function(localStream) {
        document.getElementById('local').srcObject = localStream;
        const call = peer.call('receiver', localStream);
        call.on('stream', function(remoteStream) {
            document.getElementById('remote').srcObject = remoteStream;
        });
    });

}

это мой получатель

const peer = new Peer('receiver', { host: '100.0.0.98', port: 9000, path: '/', debug: 3 })
// var debugElement = domcument.getElementById('debug');




peer.on('call', function (call) {

    var conf = confirm('Some one is calling you...')

    if (conf) {

        navigator.mediaDevices.getUserMedia({
            video: true
        }).then(function (localStream) {
            document.getElementById('local').srcObject = localStream;
            call.answer(localStream);
            call.on('stream', function (remoteStream) {
                document.getElementById('remote').srcObject = remoteStream;
            });
        }).catch(function (error) { console.log(error); });
    }

});




peer.on('error', function (err) {
    var node = document.createElement("LI");                 // Create a <li> node
    var textnode = document.createTextNode(err);         // Create a text node
    node.appendChild(textnode);                              // Append the text to <li>
    document.getElementById("debug").appendChild(node);     // Append <li> to <ul> with id="myList"
});

это мой сервер

var express = require('express');
var app = express();
var ExpressPeerServer = require('peer').ExpressPeerServer;
var ip = require('ip');
var fs = require('fs');

app.use(express.static(__dirname + '/public'));


var options = {
    debug: true
}

var sslOptions = {
    key: fs.readFileSync('ssl/key.pem', 'utf8'),
    cert: fs.readFileSync('ssl/cert.pem', 'utf8')
  };

var server = require('https').createServer(sslOptions,app);
var peerserver = ExpressPeerServer(server, options);

app.use('/scripts', express.static(`${__dirname}/node_modules/`));
app.use(express.static('public'));

app.get('/sender', function (req, res, next) { 
    // res.render('sender.html');
    // res.header("Access-Control-Allow-Origin", "*");
    // res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.sendFile(__dirname + '/public/sender.html');
});

app.get('/recived', function (req, res, next) { 
    // res.render('sender.html');
    // res.header("Access-Control-Allow-Origin", "*");
    // res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.sendFile(__dirname + '/public/recived.html');
});


app.use('/', peerserver);



server.listen(9000,ip.address(),()=>{
    console.log(`server peer on ${ip.address()}:9000`);
});

Я использую peerjs v0.3.20 может кто-нибудь помочь мне спасибо, так что

1 Ответ

0 голосов
/ 22 февраля 2019

Peerjs использует устаревший API, основанный на обратных вызовах, которые вы можете увидеть на https://developer.mozilla.org, но для него открыта проблема https://github.com/peers/peerjs/issues/485

...