Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webrtc 对等连接:在本地网络中拨打电话_Webrtc_Signaling - Fatal编程技术网

Webrtc 对等连接:在本地网络中拨打电话

Webrtc 对等连接:在本地网络中拨打电话,webrtc,signaling,Webrtc,Signaling,我正在与WebRTC合作,我想实现的是: User1以192.168.x.x打开浏览器 User2以192.168.x.x打开浏览器 同一页 用户1单击call,用户2在其屏幕上显示流 我已经用node和socket.io创建了一个信令服务器,并且我能够使用socket.io在用户之间交换消息 我将遵循以下步骤: 获取用户媒体 创建对等连接1-无ice服务器 在peerconnection上添加流 创建报价 通过套接字发送报价 接收报价并创建peerconnection2-无ice服务器 发送

我正在与WebRTC合作,我想实现的是:

User1以192.168.x.x打开浏览器

User2以192.168.x.x打开浏览器 同一页

用户1单击call,用户2在其屏幕上显示流

我已经用node和socket.io创建了一个信令服务器,并且我能够使用socket.io在用户之间交换消息

我将遵循以下步骤:

  • 获取用户媒体
  • 创建对等连接1-无ice服务器
  • 在peerconnection上添加流
  • 创建报价
  • 通过套接字发送报价
  • 接收报价并创建peerconnection2-无ice服务器
  • 发送答案
我还将一些日志记录在“onicecandidate”和“onaddstream”中,以查看何时调用它们,并在“onaddstream”中创建videoelement

当我按下呼叫按钮时,我在另一台计算机上看到视频元素变为黑色,但我看不到任何视频或音频。 当然我错过了一些重要的步骤

有人能告诉我,我必须采取哪些步骤才能打一个正确的电话,并交换所有必要的数据,以便在另一端显示流吗


非常感谢

您的一台ICE服务器至少还应该有一台stun服务器。我会使用'stun:stun.l.google.com:19302'| |'stun:23.21.150.121',即使从技术上讲你并不需要

但如果您没有ICE服务器,就不必担心收集候选人。一些可能发生的事情

  • 在创建报价和创建答案之前,请确保将流添加到每个连接,它表示您获得了用户媒体,但并不是说您将其添加到了peerconnection
  • 您没有设置本地和远程描述
    • 在创建计算机时,应设置其本地描述
    • 应答机应将其远程描述设置为产品描述,并将其本地描述设置为其创建的描述
    • 确保将应答sdp发送到初始发售计算机,并且该发售计算机将其设置为其远程描述
除非您添加所需的流,创建描述,然后相应地设置其本地和远程描述,否则流不会相互发送

如果这不起作用,您可能应该发布页面的代码

A STUN server is used to get an external network address.
TURN servers are used to relay traffic if direct (peer to peer) connection fails. 
请参见此图,它描述了peerconnection的工作原理


您应该发送ice候选者(即使两台计算机连接到同一台设备)。你可以在互联网上找到很多例子。只需添加一个简单的开放式stun服务器('stun:stun.l.google.com:19302'| |'stun:23.21.150.121')作为你的ICE服务器之一,在对等连接上完成icegatheringstate之前不发送流。嘿,我来试试看:你有防火墙吗?没有防火墙。莫思发表的这篇文章帮助我更好地理解了这一点。它现在可以正常工作了,正如预期的那样。STUN服务器对于获取您的公共IP非常有用。在这里,因为它仅限于局域网,所以不是。你是对的,只是推荐它可能会阻塞流,因为OP没有指定他的网络架构。事实上,我不理解向peerconnection添加ice候选者的部分。谢谢,很棒的文章