GENET:基于WebRTC的个人志愿者计算胖树覆盖

2020-07-14 02:26:05

在节点加入和离开时,动态维护由WebRTC连接的节点的树状覆盖拓扑。每个节点接受最大数量的新连接,之后将较新的连接请求委派给子节点。

//在根节点上,nodevar bootstrap=require(';webrtc-bootstrap';)(';server主机名或IP:port';)var节点=REQUIRED(';WebRTC-TREE-OVERLAY';)变量ROOT=新的通道函数(Node(bootstrap).becomeRoot(';secret';)root.on(';child-connect';,){CHANNEEL.SEND(';;PING&39;)CHANNEL。ON(';DATA';,function(Data){console.log(Data)})}))}))//在子节点引导数据库=.var节点=.var node=new Node(bootstrap).join()node.on(';parent-connect';,Function(Channel){channel(';data';,function(Data){console.log(Data)channel el.send(';pong';)})})node.on(';Child-connect';,function(Data){console.log(Data)channel el.send(';pong';)})node.on(';Child-connect';,function(Channel){channel.send(';ping';)})。

opts.requestTimeoutInms候选人将被考虑加入的时间上限。如果在间隔结束前连接握手未成功,则拒绝候选。

保留的孩子和候选人的最大数量。如果加入请求到达时,它将被传递给其中一个子项,或者一直保留到其中一个候选项成为已连接的子项。

父通道,如果节点尚未加入或为根,则为NULL。

成为root(通过引导客户端),之后节点将自动处理加入请求。

是父级通道是来自我们的父级(True)还是来自我们的某个子级(False)。

抽象基础WebRTC通道以将树联接协议与应用程序级消息多路复用。可以在这些信道上的拓扑上发送轻量级消息。但是,对于任何繁重的数据流量,都应该建立专用的SimplePeer连接。该通道可以用于该目的。

构造函数在加入过程中由节点在内部调用,并且不能公开使用。

通道的标识符,与两端的Node.id不同。从子级的角度来看,其父级的ID始终为空。从父级的角度来看,每个子级都有一个非空的唯一ID。

在内部使用。在联接请求到达时激发。应用程序应该不需要为这些而烦恼。