0

我在我的服务器端构建了 reactjs,并在获取“/ *”上的请求时渲染它。

我的问题是当我在 localhost 中拨打电话时它可以工作,但是当我构建项目并在服务器上运行它时,有时我的流呼叫视频无法到达接收器,例如有时它可以在 wifi 上的另一台笔记本电脑上运行,但不能在手机上运行有wifi也没有蜂窝数据。

是否可以像这样提供反应应用程序,或者这是我的代码的问题

我还从 numb.viagenie.ca 添加了 stun/turn 服务器,但它仍然相同

我该如何解决?

这是用户拨打电话时的代码部分:

var peer = new Peer({
    initiator:true,
    trickle:true,
    iceTransportPolicy: 'relay',
    stream:uStream,
    offerConstraints: { 
        offerToReceiveAudio: true, 
        offerToReceiveVideo: true 
    },
    config: {
        iceServers: [
            {
                urls: "stun:numb.viagenie.ca",
            },
            {
                urls: "turn:numb.viagenie.ca",
                username: "username",
                credential: "password"
            }
        ]
    }
});
peer.on('signal', signal => {
    console.log('Call Signal', signal);
    socket.emit('call', { signal, receiver_id: user.id, room_id:roomID, caller_username:username });
});

这是用户接到电话时的代码部分:

var peer = new Peer({
    initiator:false,
    trickle:true,
    answerConstraints: { 
        offerToReceiveAudio: false, 
        offerToReceiveVideo: false 
    }
});
peer.on('signal', signal => {
    console.log('Answer Signal', signal);
    socket.emit('answer', { signal, room_id:roomID, receiver_username:username, caller_username:incomingCall.caller_username });
});
peer.signal(incomingCall.signal);

谢谢。

4

1 回答 1

1

我用 coturn 创建自己的 TURN/STUN 服务器解决了我的问题。我猜其他服务器有一些问题。

于 2020-10-30T19:38:33.237 回答