패키지, 저장소 및 앱 카테고리 검색

패키지 상세v0.5.6

peerdart

Dart용 간단한 피어 투 피어 WebRTC. Flutter용 PeerJS 포트.

AndroidiOSmacOSWindowsLinux
30일 다운로드
481
좋아요
78
Pub 점수
135

패키지 설치

flutter pub add peerdart

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

peerdart는 WebRTC를 사용하여 간단한 피어 투 피어 통신을 가능하게 하는 Dart 패키지로, PeerJS의 Flutter 호환 버전입니다. 중앙 서버 없이 장치 간 실시간 데이터 및 미디어 교환을 가능하게 합니다. 낮은 지연 시간 연결을 위해 설계되었으며 Android, iOS, macOS, Windows, Linux 등 여러 플랫폼에서 장치 간 직접 통신을 지원합니다. 비디오 통화, 라이브 스트리밍 또는 협업 도구와 같은 즉시 연결이 필요한 애플리케이션에 적합합니다.

사용 사례

  • 실시간 영상 통화
  • 라이브 스트리밍
  • 협업 응용 프로그램
  • 직접 장치 메시지
  • WebRTC 기반 채팅 앱

주요 기능

  • WebRTC 기반 P2P 연결
  • 크로스 플랫폼 지원
  • PeerJS와 유사한 간단한 API
  • 데이터 및 미디어 채널을 지원합니다
  • 자동 ICE/STUN 처리

적합한 대상

  • Flutter에서 실시간 앱을 개발하는 개발자
  • 직접 장치 통신이 필요한 프로젝트
  • 다수의 운영 체제를 대상으로 하는 앱
  • WebRTC 기능 프로토타이핑
  • 저지연 상호작용 경험

고려 사항

  • 네트워크 구성(방화벽/NAT)이 필요합니다
  • 연결 설정을 위해 신호 서버에 의존합니다
  • 제한된 브라우저 지원(플러터 전용)
  • 성능은 네트워크 품질에 따라 달라집니다
  • NAT 통과를 위해 TURN 서버가 필요할 수 있습니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

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

  • [x] Alpha: Under heavy development
  • [x] 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").listen((name) {
    conn.send("hi!");
})

Receive

peer.on<DataConnection>("connection").listen((connection) {

    // On peer closed.
    conn.on("close").listen((event) {
        setState(() {
            connected = false;
        });
    });

    // ....
})

Media calls

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;
        });
    });
});

More examples

See more at example.

Support

Works both on mobile and web browsers (Chrome tested.).

Links

Documentation / API Reference
PeerServer

License

PeerDart is licensed under the MIT License.

카테고리

의존성

의존성 목록 5 개

소스 저장소

이 패키지를 사용하는 프로젝트