1 个不稳定版本
0.1.0 | 2019年10月31日 |
---|
#2 在 #去中心化
100KB
2.5K SLoC
Mpad - 一个去中心化的本地多人文本共享板
Mpad 是一个桌面应用程序(计划中的移动/网络客户端!)它允许您在本地网络上与其他用户共享简单的文本板
您在 Mpad 实例中进行的任何更改都会立即通过多播和 CRDT(冲突解决)反映到所有其他电脑上。
这个想法源于在办公室的几台笔记本电脑之间共享剪贴板的挫败感。
编译
需要安装 rust 和 gtk(用于 gtk-rs
),然后只需
cargo build --release
安装
从路径
cargo install --path .
或从 Cargo
cargo install mpad
使用
在终端中键入 mpad
将弹出一个窗口。在每个电脑上打开它,以便它们参与。
内部结构
使用现有 ditto CRDT 库的精简版(添加了额外的一个或两个功能)。
multicast.rs 在这里做了所有繁重的工作!
- 用户输入内容
- 使用差异更新其本地 CRDT
- 如果有更改,则将它们以部分块的形式提交到多播地址(目前硬编码为
239.1.11:1111
) - 从多播地址接收更新
- 将远程状态与本地 CRDT 合并
这通过通道暴露,应该很容易将其插入其他前端
pub fn setup_channels() -> Result<(Sender<String>, Receiver<String>), Error>;
其中发送者是您从文本板发送更新的位置,接收者是您从网络接收更新的位置。
依赖项
~22–31MB
~566K SLoC