多方peer.js应用程序

2024-01-17

我对 PeerJs 和 WebRTC 是全新的。我有一个 1:1 NodeJS/PeerJS 应用程序在我的远程服务器上运行,效果很好。然而现在我想探索将其扩展到 1:N 模型,其中主机 ID 可以有多个对等点连接到它们,并且每个对等点都可以接收其他每个连接的对等点的音频/视频。我现在可以接受大约 4-5 个参与方的通话,因此网状架构就可以了。将来我将开发基于媒体服务器的架构,以便在同一会话中吸引更多参与者。

目前在我的代码中,如果通话中有超过 2 方,最后加入的一方将踢出前一方。

请问PeerJS库是否可以支持多方视频聊天(4-5个用户就可以了)?如果没有,您能否指导我如何将 1:1 应用程序增强为 1:N 模型?我在网上找不到任何明确的方向。

提前谢谢了 ... :-)


显示您的一些代码将有助于解决您的问题。通过使用干净的WebRTC,你可以实现电话会议,所以我认为你也可以在peerJs中做到这一点。

在通话开始时,您需要调用 getUserMediaonce并获取您的本地流。

var myStream;
navigator.getUserMedia({video: true, audio: true}, function(stream) {
    myStream = stream;
}, function(err) {
    console.log('Failed to get local stream' ,err);
});

所以当你向他们提出要约时,你可以写

var call = peer.call('another-peers-id', myStream);
call.on('stream', function(remoteStream) {
    // Show stream in some <video> element.
});

当对等方收到呼叫时,它会应答

peer.on('call', function(call) {
    call.answer(myStream); // Answer the call with an A/V stream.
    call.on('stream', function(remoteStream) {
      // Show stream in some <video> element.
    });
});

我希望这可以帮助您解决您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多方peer.js应用程序 的相关文章

  • http模块和express模块​​有什么区别?

    我正在学习 NodeJs http www tutorialspoint com nodejs http www tutorialspoint com nodejs 我无法理解使用 http 模块 get post 方法 与使用expres
  • 使用 mosca MQTT 的请求响应模式

    有没有办法使用 mosca MQTT 实现请求响应模式 以 检查客户端的回复 如果在预期时间内未收到预期回复 则重新发布 我相信这在 Mqtt 5 中是可能的 但截至目前 我必须使用 QoS 1 的 Mosca 代理 支持直到 Mqtt 3
  • 有没有办法将击键发送到节点中的终端?

    我特别想发送 ctrl l 清除终端 这样每次我测试脚本时终端都是干净的 如果您使用的是 Linux console log 033 2J 如果你使用的是 Windows 我认为这可行 将光标设置在 0 0 var util require
  • AWS Lambda 提前结束(没有任何显式返回或回调)

    我在放入 AWS Lambda 中的一些 Node js 代码时遇到了一些问题 我需要进行几个异步调用 虽然第一个调用的行为符合我的预期 但 lambda 函数在第二个调用完成之前终止 返回值为 null 这让我认为 lambda 正在执行
  • 变量前面加双下划线

    我的节点代码中有以下代码片段 var fs require fs fs readdir dirname function err files console log files 为什么变量 dirname 有双下划线 我知道一个下划线是私有
  • IE8 和 9 上的 socket.io 问题

    Socket io 在除 IE8 和 9 之外的所有平台上都能完美运行 这是客户端要求 你们能帮忙解决这个问题吗 我一直在阅读所有类似的问题 但到目前为止我发现的大多数解决方案都无法解决 IE8 上的这个问题 这是结构 服务器端 var i
  • 全局未在 ../node_modules/socket.io-parser/is-buffer.js 中定义

    预先感谢您帮助我 我正在尝试在我的一个角度组件中连接套接字 但在浏览器的控制台中它会抛出一个错误 指出 Global 未在 Object node modules socket io parser is buffer js 中定义 这是我的
  • Node.js - 生成的进程正在生成错误“execvp():没有这样的文件或目录”

    我有以下代码 旨在生成并分离子进程 它只是同一目录中的另一个 node js 脚本 这是我正在运行的确切代码 var fs require fs var child require child process var out fs open
  • 为 npm install 添加本地项目依赖

    在 npm 中添加本地项目依赖项的正确语法是什么package json file 我本地有 git 项目C projects MyApp 我想得到这个项目npm install 我尝试以下 dependencies my app file
  • 限制 Axios 请求

    我正在使用 axios 向 Deezer API 发出请求 不幸的是 使用 Deezer 的 API 当您请求艺术家的专辑时 它不包括专辑曲目 因此 我正在通过请求艺术家的专辑 然后对每个专辑执行后续的 axios 请求来解决这个问题 我遇
  • WebRTC 不适用于 Windows

    每当我尝试为 Windows 构建 WebRTC 时 运行 gclient runhooks 时都会收到此错误 running C path to depot tools python276 bin python exe src build
  • 动态更改温斯顿的日志级别

    我尝试在运行时实现日志级别更改 我一直在关注https github com yannvr Winston dynamic loglevel blob master test https github com yannvr Winston
  • 函数不会等到 Promise 得到解决

    我正在开发一个简单的不和谐机器人 我正在尝试打印有关某个玩家的一些一般数据 我最近了解了 async await 并尝试将其实现到我的代码中 然而 它似乎不起作用 因为当我第一次触发此代码时 它会打印 null 但在后续触发时 它将打印正确
  • 如何使用 AMQP 以“PeekLock”模式从 Azure 服务总线队列获取消息?

    我们正在尝试在 Node 应用程序中使用 Azure 服务总线 我们的要求是从队列中获取多条消息 由于Azure SDK for Node不支持批量检索 我们决定使用AMQP 虽然我们能够使用 Peek Messages 获取消息 如此处所
  • 如何防止 gulp-notify 破坏 Windows 中的 gulp-watch?

    我正在使用吞咽通知 https www npmjs org package gulp notify插入 这是我如何在 gulpfile js 中实现它的示例 您可以看到我也在使用 gutil 和 livereload 我不知道它们是否发挥任
  • 嵌套异步/等待 Nodejs

    似乎无法弄清楚为什么这对我不起作用 我有一个父函数 它对子加载进程执行 AWAIT LOAD 进程又调用另一个名为 LOADDATA 的 AWAIT 所以基本上是这样的 module exports async function try a
  • Docker - SequelizeConnectionRefusedError:连接 ECONNREFUSED 127.0.0.1:3306

    我正在尝试使用 Docker 容器启动并运行我的 Nodejs 应用程序 我不知道可能出了什么问题 当我使用控制台调试凭据时 凭据似乎已正确传递 另外启动sequel pro并使用相同的用户名和密码直接连接似乎也可行 当节点在容器中启动时
  • npm install -g expo-cli 失败并显示“EPERM:不允许操作,取消链接 '...\adb.exe'

    我在运行时收到错误 npm install g expo cli 我尝试以管理员身份重新安装节点模块 但出现相同的错误 环境 Windows 10 节点版本 10 15 3 NPM版本 6 9 0 我预计安装会发生 但出现了这样的错误 np
  • Node.js - 重载函数

    有没有一种方法可以重载node js中的函数 类似于 noSuchMethod https developer mozilla org en JavaScript Reference Global Objects Object noSuch
  • Node npm 包抛出使用严格:全局发布和安装后未找到命令

    我正在尝试发布 npm 包 当我全局安装该包并尝试运行 cli 命令时 我收到此错误 nvm versions node v0 12 2 bin myPack line 1 use strict command not found nvm

随机推荐

  • 重命名 AWS S3 存储桶中的文件夹的成本

    我想重命名 S3 存储桶中的一个文件夹 我知道重命名将运行一个 PUT 请求 每 1000 个请求花费 1 美分 但是 PUT 请求被定义为 COPY 并且还涉及 GET 我的问题是 当我们重命名 S3 存储桶中的文件夹时 是否涉及将所有子
  • 为什么 Scala 需要重复构造函数? (java.lang.NoSuchMethodException)

    我在 Hadoop 作业中收到此错误 java lang NoSuchMethodException
  • Android Base Activity:基于全局变量,无法从某些Activity中获取

    我现在正在上 Android 课程 所以我对 Android 应用程序开发有点陌生 我对基本活动的第一个假设是它是全局变量 并且它的值可用于所有活动 我发现它可用于我的主要活动 但不适用于此后的任何活动 在基本活动中 我存储对象的 Arra
  • jQuery UI 的星级评定小部件

    我被介绍给星级小部件 http orkans tmp 22web net star rating 用于 jQuery UI 我原来用的是this one http www fyneworks com jquery star rating 两
  • 在 Lucene 中处理相对较小索引文档的大型搜索查询

    我正在开发一个项目 其中我们索引相对较小的文档 句子 并且我们希望使用大型文档作为查询来搜索这些索引 这是一个相对简单的例子 我正在索引文档 docId 1 text back to black 我想使用以下输入进行查询 Released
  • 为什么我不能直接访问对象文字的属性?

    为什么使用下面的语法 a 1 b 2 constructor 是无效的 而 1 2 constructor 已验证 a 1 b 2 constructor不是无效的语法 但它是不明确的 因为 表示一个块 还是一个对象 所以你必须用括号来消除
  • 如何进行嵌套查询?

    有一个表 users 并且有一个字段 informed by id 显示邀请该用户的人的用户 ID 需要创建一个 MySQL 查询 返回包含用户所有字段的行以及显示每个用户邀请了多少人的 informs count 字段 像这样的事情 SE
  • 如何在 Android 中切换方向锁定?

    我想在我的首选项活动中创建复选框 允许用户切换方向更改 在类似的问题中 人们只写关于完整方向锁定 通过重写 onConfigurationChanged 方法或在 AndroidManifest xml 中添加 configChanges
  • Team Build Extensions 2010 中的使用 ANT 构建 Java

    我有一个基本的 C 项目 但我想启动 ANT 构建 编译一些非常基本的 java 代码 并触发 junit 测试 如果 junit 测试失败 我如何从 Team Build 2010 基本上是 TFS 2010 中得知 如果是这样 我的 T
  • 如何在 C++ 标头中声明数组?

    这与其他一些问题有关 例如 this https stackoverflow com questions 34987 how to declare an array of strings in c 以及我的其他一些问题 In 这个问题 ht
  • 验证请求源是来自Internet还是Intranet

    我有在互联网上运行的应用程序 其中也包含一些管理模块 我不想让用户在互联网上访问我的管理模块 我希望来自内联网的请求可以访问管理模块 有没有办法在不开发服务管理组件的新应用程序的情况下控制这个问题 如果您使用 servlet 您可以添加过滤
  • 如何使用 Pyrtd/pythoncom 解决“pywintypes.com_error”?

    我正在尝试使用pyrtd https code google com p pyrtd Python模块用于获取可以通过RTD在Excel中获取的信息 但是 当我尝试运行示例 python 脚本 http code google com p
  • Ionic 无限滚动不适用于所有 Android 设备

    我目前正在开发一个离子应用程序并成功实现了无限滚动功能 它在桌面浏览器和较新的 Android 设备上运行良好 但是 我在运行 Android 4 1 或更低版本的手机上遇到问题 问题 我打开页面 它加载并显示前 20 个项目 效果很好 我
  • Firefox 中的 Slidedown 和 SlideUp 循环错误

    http www queness com post 1047 easy to style jquery drop down menu tutorial comment 7912 http www queness com post 1047
  • hibernate - HQL 连接许多子句

    我一直在阅读 Hibernate 文档 但没有找到任何可以解释如何执行以下操作的内容 我尝试将以下 SQL 代码转换为 HQL SELECT msg cmd FROM Schema Messages AS msg LEFT OUTER JO
  • 使用多个 JSON 对象设置单元格的文本

    我有一个简单的网络服务 可以将一些数据传递到表视图中 并且工作正常 这是我目前拥有的代码 cell detailTextLabel setText item objectForKey Ball 1 正如我所说 这完美地工作并显示球号 例如
  • 我可以将 vjslib.dll 放入应用程序的 /bin 目录中吗?

    我正在进行生产部署 不幸的是 我正在部署到一个严格控制的环境 今晚我不太可能获得运行完整 Visual J 可再发行 EXE 的许可 我们的应用程序当前抛出错误 表示找不到程序集 vjslib dll 我可以将其放入应用程序的垃圾箱中 然后
  • QML TableView从特定单元格获取数据(选定行+特定列)

    我有QMLTableView with QSqlQueryModel 我需要选择任何行并从表的每一列中获取数据以分隔TextField 这是 abonentstable h pragma once include
  • 如何从 URL 中删除网页扩展名? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想从 URL 中删除网页扩展名 有人给了我 htaccess 的代码 但当我打开重写模块时 它在本地主机上工作 但是当我在 Godaddy 上使用它
  • 多方peer.js应用程序

    我对 PeerJs 和 WebRTC 是全新的 我有一个 1 1 NodeJS PeerJS 应用程序在我的远程服务器上运行 效果很好 然而现在我想探索将其扩展到 1 N 模型 其中主机 ID 可以有多个对等点连接到它们 并且每个对等点都可