peerdart 0.1.0 peerdart: ^0.1.0 copied to clipboard
Simple peer-to-peer with WebRTC for Dart. PeerJS port for Flutter.
PeerDart: Simple peer-to-peer with WebRTC #
PeerDart provides a complete, configurable, and easy-to-use peer-to-peer API built on top of WebRTC, supporting both data channels and media streams.
PeerDart mirrors the design of peerjs. Find the documentation here..
Status #
- ✅ Alpha: Under heavy development
- ✅ Public Alpha: Ready for testing. But go easy on us, there will be bugs and missing functionality.
- ❌ Public Beta: Stable. No breaking changes expected in this version but possible bugs.
- ❌ Public: Production-ready
Live Example #
Here's an example application that uses both media and data connections: Example
Setup #
Create a Peer
final Peer peer = Peer("pick-an-id");
// You can pick your own id or omit the id if you want to get a random one from the server.
Data connections #
Connect
const conn = peer.connect("another-peers-id");
conn.on("open", null, (ev,_) => {
conn.send("hi!");
});
Receive
peer.on("connection", null, (ev, _) => {
conn.on("data", null, (event, _) => {
// Will print 'hi!'
console.log(event.eventData);
});
conn.on("open", null, () => {
conn.send("hello!");
});
});
Media calls #
Call
final mediaStream = await navigator.mediaDevices
.getUserMedia({"video": true, "audio": false});
final conn = peer.call("peerId", mediaStream);
conn.on("stream", null, (ev, _) {
_localRenderer.srcObject = ev.eventData as MediaConnection
// Do some stuff with stream
});
Answer
peer.on("call", null, (ev, context) async {
final call = ev.eventData as MediaConnection;
final mediaStream = await navigator.mediaDevices
.getUserMedia({"video": true, "audio": false});
call.answer(mediaStream);
call.on("stream", null, (ev, _) async {
_localRenderer.srcObject = mediaStream;
_remoteRenderer.srcObject = ev.eventData as MediaStream
// Do some stuff.
});
});
Support #
Works both on mobile and web browsers (Chrome tested.).
Links #
Documentation / API Reference #
PeerServer #
License #
PeerDart is licensed under the MIT License.