0 purchases
webrtc mesh
WebRTC Mesh #
An easy cross-platform WebRTC mesh network api.
Features #
✅ Cross-platform
✅ Custom Signalling Server support (including Firestore)
✅ Multiple Rooms
✅ Data Channel streams
✅ Automatic connection/disconnection handling
Usage #
Check the /example folder for a full example.
For a completed group chat example, check out WebRTCMesh-GC
A simple chat app example:
import 'package:flutter/material.dart';
import 'package:webrtc_mesh/webrtc_mesh.dart';
import 'firestore_signalling.dart';
class ChatScreen extends StatefulWidget {
final String roomId;
final WebRTCMesh webRTCMesh;
ChatScreen({Key? key, required this.roomId})
: webRTCMesh = WebRTCMesh<FirestoreSignalling>(
roomID: 'roomId',
signallingCreator: (roomId, localPeerID) =>
FirestoreSignalling(roomId: roomId, localPeerID: localPeerID),
),
super(key: key);
@override
State<ChatScreen> createState() => _ChatScreenState();
}
class _ChatScreenState extends State<ChatScreen> {
final _messages = <Message>[];
final TextEditingController _textController = TextEditingController();
@override
void dispose() {
super.dispose();
widget.webRTCMesh.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Expanded(
child: StreamBuilder<Message>(
stream: widget.webRTCMesh.messageStream.stream,
builder: (context, snapshot) {
if (snapshot.hasError) {
return Center(
child: Text('Error: ${snapshot.error}'),
);
}
if (!snapshot.hasData) {
return const Center(
child: Text('No messages yet'),
);
}
_messages.add(snapshot.data!);
return ListView.builder(
itemCount: _messages.length,
itemBuilder: (BuildContext context, int index) {
final message = _messages[index];
return ListTile(
title: Text(message.message ?? ''),
subtitle: Text(message.from),
trailing: Text(message.type),
);
},
);
)
),
],
),
);
}
}
copied to clipboard
Additional information #
This is an overview of the signalling for WebRTC Mesh network protocol.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.