PeerDart: 简单的点对点通信,基于 WebRTC
PeerDart 提供了一个完整、可配置且易于使用的点对点 API,该 API 构建在 WebRTC 之上,支持数据通道和媒体流。
PeerDart 模仿了 peerjs 的设计。文档请 在此 查看。
状态
- Alpha:开发中
- 公开 Alpha:可供测试。但请对我们宽容些,会有 bug 和缺失的功能。
- 公开 Beta:稳定。此版本预计不会有破坏性更改,但可能存在 bug。
- 公开:生产就绪
实时示例
以下是一个同时使用媒体和数据连接的示例应用程序:示例
设置
创建 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.
数据连接
联系
const conn = peer.connect("another-peers-id");
conn.on("open", null, (ev,_) => {
conn.send("hi!");
});
接收
peer.on("connection", null, (ev, _) => {
conn.on("data", null, (event, _) => {
// Will print 'hi!'
console.log(event.eventData);
});
conn.on("open", null, () => {
conn.send("hello!");
});
});
媒体呼叫
呼叫
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
});
接听
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.
});
});
支持
同时支持移动和 Web 浏览器(已测试 Chrome)。
链接
文档 / API 参考
PeerServer
许可证
PeerDart 在 MIT 许可证下授权。