联网框架动态房间不能使用简单的 rtc

Posted

技术标签:

【中文标题】联网框架动态房间不能使用简单的 rtc【英文标题】:Networked aframe dynamic rooms not working with easy rtc 【发布时间】:2021-11-07 07:46:42 【问题描述】:

问题

您好,我已经使用表单重新混合了网络框架动态房间的模板:

https://glitch.com/edit/#!/power-lily-pancake?path=public%2Fscene.html%3A41%3A0

由于某种原因,每当我将这些代码行添加到 <a-scene> 标记时,整个项目都会中断:

networked-scene="
      room: audio;
      adapter: easyrtc;
      audio: true;
      video: true;
      debug: true;
      inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js"

我想知道是否有办法将这些代码行添加到 <a-scene> 标记中,使其看起来像这样:

    <a-scene dynamic-room networked-scene="
      room: audio;
      adapter: easyrtc;
      audio: true;
      video: true;
      debug: true;
      inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js"
>

但有了它,动态房间仍然可以工作。这意味着如果两个人在不同的房间,他们将看不到对方,但如果他们在同一个房间,他们将能够看到对方。如何做到这一点?

链接

A-frame网站:https://aframe.io

联网 A 框架文档:https://www.npmjs.com/package/networked-aframe

包含我当前代码的项目:https://glitch.com/edit/#!/power-lily-pancake?path=public%2Fscene.html%3A41%3A0

【问题讨论】:

【参考方案1】:

afaik dynamic-room component 旨在附加 networked-scene,而不是更新它 (since it doesn't handle updates)。这就是为什么dynamic-room example scene 确实只有一个dynamic-room 组件,也是为什么dynamic-room 不能与networked-scene 一起使用。

我会将所有 networked-scene 属性都放到 dynamic-room 设置中,但也可以让这两者像你想要的那样一起工作:

<a-scene dynamic-room networked-scene>

解决此问题的一种方法是使用networked-sceneconnectOnLoad property - 让dynamic-room 更改房间,然后决定何时连接。

由于networked-scene 检查init 中的connectOnLoad - 它将始终使用默认值。我们需要确保默认是false 而不是true


所以需要做两件事:

    在场景初始化之前更改networked-scene默认值:

    <script>
      // This is hacky, another way would be copying the component and make it react to updates
      AFRAME.components["networked-scene"].schema.connectOnLoad.default = false;
    </script>
    
    <a-scene dynamic-room networked-scene>
    

    在设置房间 ID 时发出 connect

    // set the room id
    el.setAttribute("networked-scene", "room", roomID);    
    
    // notify `networked-scene` that you're ready to connect 
    el.emit("connect", null, false);
    

查看this glitch

【讨论】:

对不起,迟到的评论。代码完美运行!我确实有一个关于从网络场景更改为动态房间的问题。我已经发布了另一个关于它的问题:***.com/questions/69306679/…。如果你想检查这个问题,那对我来说意义重大。如果没有,那当然也很好。再次感谢您的回答!

以上是关于联网框架动态房间不能使用简单的 rtc的主要内容,如果未能解决你的问题,请参考以下文章

融云参加RTC实时互联网大会 现场集成IM SDK

专注于嵌入式/物联网的webrtc native库metaRTC

全球通信云市场爆发增长,RTC 技术普惠还有多远

物联网架构成长之路(39)-Bladex开发框架环境搭建

saltstack学习-简单部署之rhel5安装salt(不能联网)

区块链物联网和5G