v0.5.6
peerdart
适用于 Dart 的简单点对点 WebRTC。Flutter 的 PeerJS 端口。
78喜欢 324近 30 天下载135Pub 分数
AndroidiOSmacOSWindowsLinux
适用于 Dart 的简单点对点 WebRTC。PeerDart 与 peerjs 的设计保持一致。
{"sdk":"flutter"}^1.1.0^4.1.0^0.13.1+hotfix.1^3.0.1^0.6.0^5.1.1{"sdk":"flutter"}以下为英文项目原文快照,最新内容请访问 GitHub。
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..
Here's an example application that uses both media and data connections: Example
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.
Connect
const conn = peer.connect("another-peers-id");
conn.on("open").listen((name) {
conn.send("hi!");
})
Receive
peer.on<DataConnection>("connection").listen((connection) {
// On peer closed.
conn.on("close").listen((event) {
setState(() {
connected = false;
});
});
// ....
})
Call
final mediaStream = await navigator.mediaDevices
.getUserMedia({"video": true, "audio": false});
final conn = peer.call("peerId", mediaStream);
// Do some stuff with stream
conn.on<MediaStream>("stream").listen((event) {
_remoteRenderer.srcObject = event;
_localRenderer.srcObject = mediaStream;
setState(() {
inCall = true;
});
});
});
Answer
peer.on<MediaConnection>("call").listen((call) async {
final mediaStream = await navigator.mediaDevices
.getUserMedia({"video": true, "audio": false});
call.answer(mediaStream);
// on peer closed
call.on("close").listen((event) {
setState(() {
inCall = false;
});
});
// Get peer stream
call.on<MediaStream>("stream").listen((event) {
_localRenderer.srcObject = mediaStream;
_remoteRenderer.srcObject = event;
setState(() {
inCall = true;
});
});
});
See more at example.
Works both on mobile and web browsers (Chrome tested.).
PeerDart is licensed under the MIT License.