WORK IN PROGRESS demo
A component for A-Frame that enables sharing and updating objects with multiple peers over p2p WebRTC.
Built on top of unsigned-swarmlog, a WebRTC swarm that swarms around a hyperlog, an append-only Merkle DAG that replicates based on scuttlebutt logs and causal linking.
The A-Frame objects created with the A-Frame inspector persist in memory via memdb but could be altered to use leveldb if desired.
Note that substack's original swarmlog is intended to be a cryptographically-secure means of ensuring a publisher to a hyperlog is who they say they are. aframe-p2p-component uses a fork of this project that ignores the cryptographically-secure signing aspect of swarmlog, assuming that small teams of trusted individuals will be using this component to collaboratively build A-Frame scenes and objects without any servers.
CAVEATS: Be warned that not all objects are working just yet.
WARNING!: Physics and animation will trigger position and rotation changed events very frequently. The updating to hyperlog is de-bounced but nevertheless, it is NOT recommended that you use physics or animation with this component at this time.
Property | Description | Default Value |
---|---|---|
signalhub | the signalling server url which is required for the peers to find each other | https://signalhub.mafintosh.com |
topic | the topic (id) of the p2p channel the peers will be swarming in | 'mytopic' |
NOTE: HTTPS seems to be necessary sometimes for the signalhub property value.
Install and use by directly including the browser files:
<head>
<title>My A-Frame Scene</title>
<script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script>
<script src="https://rawgit.com/brodavi/aframe-p2p-component/master/dist/aframe-p2p-component.min.js"></script>
</head>
<body>
<a-scene p2p="signalhub: https://somesignalhub.com; topic: myprivatetopic">
</a-scene>
</body>
Install via npm:
npm install aframe-p2p-component
Then require and use.
require('aframe');
require('aframe-p2p-component');