如何在没有互联网连接的情况下通过本地网络进行 WebRTC?

2023-12-26

我想让两台不同的计算机打开一个静态 html 页面,并且能够通过局域网上的 WebRTC 相互通信。在这种情况下,没有与外界的互联网连接。其中一台电脑可以手动输入另一台电脑的 IP 地址,并使用该硬编码的 IP 进行连接。 ICE服务器有必要吗?如果是这样,服务器本身是否需要访问外部世界的互联网?


在这种情况下,您不需要 ICE 服务器。一般来说,您通常有以下 ICE 候选人:

  • 主机(由客户端通过绑定到其本地分配的 IP 地址和端口来生成)
  • srflx(服务器反射候选是使用 STUN 生成的)
  • 中继(中继候选是使用TURN生成的)

因此,如果没有 ICE 服务器,您将只有host生成的候选者对于您的情况来说已经足够了,因为两个用户都在同一个本地网络中。

尽管 WebRTC 支持点对点通信,但它仍然需要一个用于信令的服务器:支持媒体和网络元数据的交换以引导对等连接。

因此,这里的主要问题是,您需要以某种方式在端点之间交换“提议”和“答案”,以便各方都有足够的彼此信息。通常,一些信令协议+公共服务器用于此目的。

对于您的情况,您有 3 个选择:

  • 在 2 个浏览器之间建立直接的 p2p WebSocket 连接。不确定是否可能。看起来浏览器只能连接到其他端点,而不能监听。
  • 手动复制\过去“offer”和“answer”SDP,我认为这也不好
  • 有一些第三台计算机安装了一些信令服务器,因此其他对等方将使用它来相互交换“报价”和“答案”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在没有互联网连接的情况下通过本地网络进行 WebRTC? 的相关文章

随机推荐

  • svn - 如何下载 llvm、clang 的特定版本

    当我 svn co llvm 3 3 clang 3 3 compiler rt 时 构建通过 但构建没有在构建 调试 断言中创建 clang exe 当我只为 svn co build 添加 clang 时 没有通过 但他创建了 clan
  • 由于长数据类型导致的 VBA-Excel 溢出错误

    这似乎太容易了 但我是如此绝望 我需要做的是得到最后的值列 D 的 数量大 前任 987654321 如果值只有两位数 则代码没问题 我只是无法识别问题所在 Dim lastRow As Long lastRow Cells Rows Co
  • PostgreSQL:如何使用generate_series()找出列中缺失的数字?

    SELECT commandid FROM results WHERE NOT EXISTS SELECT FROM generate series 0 119999 WHERE generate series results comman
  • 如何仅将一个窗口保留在我的应用程序中的所有其他窗口之上?

    我想在我的 C Windows 窗体应用程序中显示一个状态窗口 在应用程序等待获取锁时通知用户 这是应用程序定义的事情 但是 该窗口应该是可见的 并且始终保持在应用程序的所有其他窗口之上 即使用户单击另一个窗口 例如其后面的较大主窗口 也是
  • 如何使用 css 通过 href #id 隐藏锚标记

    我有不同的带有 href ids 的锚标记 我需要使用通用的 css 规则来隐藏它们 Content xxxxxxxxx a href tab1 Table 1 a Content xxxxxxxxxxxx a href tab2 Tabl
  • 编码风格:锁定/解锁内部还是外部?

    另一个可能愚蠢的问题 并发应该如何锁定 执行者或调用者应该负责锁定线程吗 例如没有特定的语言 Caller callAnotherThread executor method Executor method lock doSomething
  • Apache http 服务器问题

    我正在使用 Apache 版本 2 2 20 ubuntu 并尝试使用自定义 httpd conf 设置 但是我收到以下错误消息 并且希望能够为我提供任何指导 我是开发团队的一员 并获得了这个自定义的 httpd conf 文件 因此我并不
  • 捆绑与捆绑器/捆绑与捆绑安装

    两者有什么区别bundle bundler命令 有什么区别bundle bundle install 如果没有差异 为什么有多个命令做同样的事情 可执行文件因此可以互换使用 您可以在bundler exe https github com
  • 使用 Log4Net.ErrorFormat 如何记录堆栈跟踪? [复制]

    这个问题在这里已经有答案了 我想使用错误格式方法 因为它更容易阅读 更安全 更快 但我也想记录异常堆栈跟踪 I tried log ErrorFormat My 0 message pretty exception 但它只记录 我漂亮的消息
  • 如何设置 Doxygen 的输入目录?

    我有一个保存所有源文件和头文件的目录 我想运行 Doxygen 来生成这些源代码的文档 但是 我不想更改此目录中的任何内容 特别是我无法添加保存 Doxygen 文档的子目录 我怎样才能实现我所需要的 我想我需要做以下事情 我创建并转到 文
  • 获取长路径名上的文件夹 NTFS ACL

    我有一个 PS 脚本 如果分配了单个用户 它将返回 NTFS ACL 该脚本运行良好 直到我遇到超过 260 个字符的路径 我发现了很多关于路径太长问题的信息和一些解决方法 但我正在努力将解决方案集成到我的脚本中 有什么建议么 Thanks
  • 在 XAML 自动生成的文件中强制执行全局命名空间

    我的问题与其他问题不同在 XAML 中强制执行全局命名空间 https stackoverflow com questions 30607193 enforce global namespace in xaml因为我没有与封闭名称空间同名的
  • 如何在控制台应用程序中绘制矩形?

    我需要在 C 控制台应用程序中并使用扩展 ASCII 绘制一个矩形 内部有一个数字 我该怎么办 这是一个演示 public class ConsoleRectangle private int hWidth private int hHei
  • 在应用程序终止时,WCF 中 IsOneWay=true 的方法会发生什么情况

    我有一个客户端应用程序 它偶尔会通知其服务进度 对服务的方法调用标记为 IsOneWay true 因为通知不需要任何返回值 而且我不想延迟 客户端可能会向服务发出错误通知 然后终止 问题是 单向方法调用在发送消息后是否返回调用者代码 或者
  • 文件的安全流更新

    我们通过将新记录写入临时文件 然后用临时文件替换旧文件来执行大型文本文件的更新 一个严重缩写的版本 var tpath Path GetTempFileName try using var sf new StreamReader sourc
  • Flask应用程序目录和权限的设置?

    我在 ubuntu 服务器上构建了一个简单的 Flask 应用程序 并将代码放在以下目录中 主应用程序代码 home user flask app WSGI 配置 www flask app app wsgi 我的问题是 在生产中 将应用程
  • 从强名称文件中提取私钥?

    正如标题所述 有谁知道如何从 snk 文件中提取私钥 我们希望使用 StrongName 的私钥来进行加密 我读到 http msdn microsoft com en us library k5b5tt23 VS 80 aspx http
  • 如何正确删除C++中链表的节点

    我感觉好像我实际上并没有删除节点并释放内存 我想我只是移动指针 所以当我打印链接列表时 列表不会打印我删除的元素 所以我的问题是我实际上是删除节点还是只是简单地重新排列指针 这样看起来我正在删除节点 本质上只是破坏链接但不删除节点 感谢您的
  • 如何在Spring Security上针对不同的请求路径使用不同的过滤器?

    我有两个过滤器 我想对 relatorios 应用一个 对其余的应用另一个 怎么做 这是我的 不起作用 版本 Override protected void configure HttpSecurity httpSecurity throw
  • 如何在没有互联网连接的情况下通过本地网络进行 WebRTC?

    我想让两台不同的计算机打开一个静态 html 页面 并且能够通过局域网上的 WebRTC 相互通信 在这种情况下 没有与外界的互联网连接 其中一台电脑可以手动输入另一台电脑的 IP 地址 并使用该硬编码的 IP 进行连接 ICE服务器有必要