如何在PeerJs的peer.call(id,stream,[options])函数中设置元数据?

问题描述 投票:0回答:3

我试图在对等连接中发送两个调用,我想通过元数据区分它们,但当我检查元数据时,我得到空值。如何在拨打电话时添加元数据? 这是我当前的代码。

let cameracall = peer.call(conn.peer,ourcamera,{
    meta_data:JSON.stringify({ "type":"camera" })
});
let screencall = peer.call(conn.peer,ourscreen,{
meta_data:JSON.stringify({"type":"help"})
}); 

这是文档的链接peercall

javascript serialization webrtc peerjs
3个回答
4
投票

为了在没有元数据的情况下以正常方式调用远程对等点,我们有:

peer.call(remotePeerId, ourLocalStream);

用于调用远程对等点 + 将一些元数据附加到调用中:

options = {metadata: {"type":"screensharing"}};
peer.call(remotePeerId, ourLocalStream, options);

在远程对等端,用于检查接收呼叫中的元数据:

 peer.on('call', call => {
    console.log(call.metadata.type);
    call.answer();
    call.on('stream', stream => {
       // somthing to do
    });
 });

请注意,对于可能没有为其定义任何元数据的其他调用,

call.metadata.type
没有任何意义。


0
投票

存在语法问题。您需要执行此操作才能使用流发送元数据

let cameracall = peer.call(conn.peer, ourcamera, {
    metadata: { "type": "camera" }
});
let screencall = peer.call(conn.peer, ourscreen, {
    metadata: { "type": "help" }
});

然后在对等端,你可以得到这样的元数据

peer.on("call", connection => {
  connection.answer();
  connection.on("stream", stream => {
    console.log(connection.metadata);
  });
});

0
投票

peer.on('call', call => {
    call.answer(localStream);

    call.on('stream', remoteStream => {
        console.log(call.metadata.type)
    });
});

peer.call(peerId, localStream,
    {
        metadata: {
            "type": "help"
        }
    }
);

您可以随时获取内部的元数据

© www.soinside.com 2019 - 2024. All rights reserved.