标签: simple-peer

如何在 react-native-webrtc 中使用 simple-peer

我正在尝试在简单对等方的构造函数中使用 react-native-webrtc

import wrtc from 'react-native-webrtc';

const peer = new SimplePeer({initiator: true, wrtc: wrtc});

Run Code Online (Sandbox Code Playgroud)

我得到的错误是

ExceptionsManager.js:179 Error: No WebRTC support: Not a supported browser

Run Code Online (Sandbox Code Playgroud)

p2p webrtc react-native simple-peer

7
推荐指数
1
解决办法
1154
查看次数

从 ReadableStream 创建 MediaStream

我正在使用puppeteer-stream来获取在服务器上运行的由 Node 控制的浏览器流。我可以毫无问题地将这个流写入文件。

我想通过 WebRTC 将此流传输到浏览器(基本上是为了查看浏览器实时运行的内容)。对于 webrtc,我尝试使用simple-peer,因为它已经为 Node 和浏览器端准备好了绑定。

但是,当我尝试将此流传递给 simple-peer 时,出现以下错误:

/Users/my_user/my_project/node_modules/simple-peer/index.js:286
    stream.getTracks().forEach(track => {
           ^

TypeError: stream.getTracks is not a function
    at Peer.addStream (/Users/my_user/my_project/node_modules/simple-peer/index.js:286:12)
Run Code Online (Sandbox Code Playgroud)

这是因为我拥有的 Stream 是 ReadableStream 但 simple-peer (或大多数 webrtc 库)需要MediaStream

如何将实时ReadableStream转换为可与 WebRTC 一起使用的MediaStream ?我找到了将MediaStreams转换为ReadableStreams的示例 ,例如这里,但反之亦然。

我在这里错过了什么吗?

node.js webrtc mediastream node-streams simple-peer

6
推荐指数
0
解决办法
1052
查看次数

SFU的作用是什么。,Janus,mediasoup或medooze。在 webRTC 应用程序上

我正在使用带有简单对等npm 包的webRTC应用程序。

我想知道所有这些主题(SFU.、Janus、mediasoup 或 medooze.)的目的是什么以及如何集成它们以提高我的应用程序性能?

PS:我正在使用node.js服务器捆绑我的体系结构上的对等点之间的请求和信令。这些服务器和服务是否需要使我的应用程序性能良好?

希望我能在这里找到答案......

janus node.js webrtc simple-peer mediasoup

5
推荐指数
2
解决办法
2928
查看次数

Node.js - 使用 P2P 的客户端到服务器 WebRTC

在寻找使用客户端到服务器模型(如 Discord)实现 WebRTC 之后,我得出的结论是,实现这一点的方法是拥有 2 个客户端——服务器和客户端。音频流可以叠加并以 1 个单流发送回用户。

后端/server.js

const clientPeer = new Peer({ initiator: true, wrtc });
    
clientPeer.on('connect', () => console.log('hi client, this is server'));
clientPeer.on('data', (data) => console.log('got a message from client peer: ', data));
Run Code Online (Sandbox Code Playgroud)

前端/index.js

serverPeer.on('connect', () => console.log('Connected to server'));
serverPeer.on('stream', async (stream) => {
  const video = document.createElement('audio');

  ('srcObject' in video)
    ? video.srcObject = stream
    : video.src = window.URL.createObjectURL(stream);

  await video.play();
});
Run Code Online (Sandbox Code Playgroud)

我将如何实现在客户端和服务器之间发送媒体流?

javascript networking node.js webrtc simple-peer

5
推荐指数
1
解决办法
188
查看次数

“使用 simple-peer.js 库断开对等点并停止这些对等点之间的流传输的正确方法是什么?”

我希望你们一切都好

我是 webRTC 的初学者,很抱歉,如果我的问题感觉像菜鸟一样,但我想知道是否有任何正确的方法来关闭对等点之间的连接,特别是使用 simple-peer.js,期待您的精彩回复

这是我的示例反应代码,

 if (navigator.getUserMedia) {
            navigator.getUserMedia({ audio: { echoCancellation: true }, video: true }, stream => {

                let peer = new Peer({
                    initiator: this.props.isInitiator,
                    stream
                });

                this.localStream.current.srcObject = stream;
                this.localStream.current.play();

                peer.on('signal', (data) => {
                    socket.emit('offer', { data: JSON.stringify(data), conversation_id: this.props.conversation_id })
                });

                socket.on('offer', (data) => {
                    peer.signal(JSON.parse(data))
                })

                socket.on('DESTROY-VIDEO-CALL-SESSION', () => {
                    stream.getTracks().forEach(track => track.stop());
                    peer.removeAllListeners();
                    peer.destroy();
                });

                peer.on('stream', (streamData) => {
                    this.remoteStream.current.srcObject = streamData;
                    this.remoteStream.current.play();
                });

                this.setState({
                    endCall: () => {
                        socket.emit('VIDEO-CALL-ENDED', this.props.conversation_id);
                    }
                }) …
Run Code Online (Sandbox Code Playgroud)

webrtc simple-peer

5
推荐指数
1
解决办法
5620
查看次数

是否可以使用 simplepeer JS 列出连接到同一 wifi 网络的所有设备?

我正在创建一个系统,使用户能够在连接到同一 wifi 网络的设备之间共享文件。我想要一个所有已连接设备的列表,以便我可以选择要发送到的设备(使用 simplepeer JS)。

我已经创建了一个可以使用 simplepeer JS 共享文件的小程序

<p>Your id</p>
<div>
  <textarea id="yourId"></textarea>
</div>
<div><button id="connect_bt">Connect</button></div>

<div style="margin-bottom:20px;">
  <p>Other id</p>
  <div>
    <textarea id="otherId"></textarea>
  </div>
  <div></div>
</div>

<div>
  <textarea id="message_input"></textarea>
  <button id="send_message">Send message</button>
</div>

<pre id="messages"></pre>
<script src="simplepeer/simplepeer.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
var peer = new SimplePeer({
    initiator: location.hash === '#init',
    trickle: false
});

peer.on('signal', function(data) {
    document.getElementById('yourId').value = JSON.stringify(data);
});

document.getElementById('connect_bt')
        .addEventListener('click', function() {
            var other_id = JSON.parse(document.getElementById('otherId').value);
            peer.signal(other_id);
        });

document.getElementById('send_message')
        .addEventListener('click', function() {
            var message = document.getElementById('message_input').value;
            peer.send(message);
        });

peer.on('data', function(data) { …
Run Code Online (Sandbox Code Playgroud)

html javascript peer webrtc simple-peer

5
推荐指数
0
解决办法
987
查看次数

未捕获的 ReferenceError:进程未定义简单对等 Javascript

我目前正在学习 WebRTC 并使用 simple-peer 和 React 和 Socket.io 的 npm 包。当我尝试致电用户时,就会显示此错误

_stream_readable.js:529 Uncaught ReferenceError: process is not defined
    at emitReadable (_stream_readable.js:529:1)
    at onEofChunk (_stream_readable.js:506:1)
    at readableAddChunk (_stream_readable.js:255:1)
    at Readable.push (_stream_readable.js:241:1)
    at index.js:448:1


Run Code Online (Sandbox Code Playgroud)

我的 React 组件代码

    const myVideoElement = useRef();
    const peerVideoElement = useRef();
    const chatInfo=useRef();
    const peerStream=useRef();


Run Code Online (Sandbox Code Playgroud)
function startCall(){
    const peer=new SimplePeer({
      initiator:true,
      trickle:false,
      stream:stream,
    })

    peer.on('signal',(data)=>{
      socket.emit('calluser',{userToCall:chatInfo.current.userToCall,url:chatInfo.current.url,signalData:data,from:userId});
    });
    peer.on('stream',(stream)=>{
      if(peerVideoElement.current){
        peerVideoElement.current.srcObject=stream;
      }

      socket.on('callaccepted',(data)=>{
        peer.signal(data);
      })
    })
  }

Run Code Online (Sandbox Code Playgroud)
function acceptCall(){
  setIsCallAccepted(true);
    const peer = new SimplePeer({
      initiator: false,
      trickle: false, …
Run Code Online (Sandbox Code Playgroud)

javascript webrtc reactjs webpack simple-peer

3
推荐指数
1
解决办法
1655
查看次数

WebRTC(简单对等)+ STUN 没有额外的信号?

我正在尝试使用简单对等库来建立浏览器到浏览器的 WebRTC 连接(数据通道)。我的理解是(也许我有一些误解),为了让两个浏览器通过 WebRTC 连接,它们必须交换 SDP 数据并执行 NAT 遍历。为了做到这一点,可以实现一个 STUN 服务器。

在 simple-peer 库中,他们声明 simple-peer 没有实现信令协议,但它确实提供了一种提供 STUN/ICE 服务器的方法。考虑来自其网格示例的以下三个 HTML 文件:

peer1.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Peer1</title>
</head>
<body>
<script src="../../js/simplepeer.min.js"></script>
<script>
    // These are peer1's connections to peer2 and peer3
    var peer2 = new SimplePeer({ initiator: true, config: {
            iceServers: [
                {urls: 'stun:stun.a-mm.tv:3478'}
            ]
        } })
    var peer3 = new SimplePeer({ initiator: true, config: {
            iceServers: [
                {urls: 'stun:stun.a-mm.tv:3478'}
            ]
        } })

    peer2.on('signal', data => {
        console.log(data) …
Run Code Online (Sandbox Code Playgroud)

javascript websocket webrtc simple-peer

2
推荐指数
1
解决办法
2346
查看次数

我正在尝试通过 WebRTC 共享文件,但一段时间后它会停止,并且记录 RTCDatachannel 发送队列已满

let file = fileUpload.files[0];
let offset = 0;
let chunkSize = 1024*1024*16;


file.arrayBuffer().then((buffer) => {
            
 while(buffer.byteLength){
                
       const chunk = buffer.slice(0, chunkSize);
       buffer = buffer.slice(chunkSize, buffer.byteLength);
      dataChannel.send(chunk);
  }
})
Run Code Online (Sandbox Code Playgroud)

它适用于小文件,但适用于大文件。

p2p real-time-data webrtc peerjs simple-peer

1
推荐指数
1
解决办法
1139
查看次数