#local #pad #text #multiplayer #decentralised

app mpad

一个去中心化的本地多人文本共享板

1 个不稳定版本

0.1.0 2019年10月31日

#2#去中心化

MIT/Apache

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