p2p Chat Room

It is a fully decentralized p2pChatRoom. No server is needed. It is implemented through python.

Demo

运行python 脚本一键启动四个节点。

任一节点输入字符串, 广播给所有节点。

任一节点输入字符串 + id name, 发送给指定节点。

Sequence Diagram

项目分为三个阶段:

1,启动网络阶段:

首先启动种子节点seed,之后启动的节点向 seed 发送启动信息, 种子节点收到信号后,更新peers 列表。 将peers列表放送给新节点。

新节点收到peers 列表之后,向每个节点介绍自己。 老节点更新自己的peers列表。

2, 聊天阶段

输入信息时,不指定节点id, 则广播信息。

指定节点id, 则定向发送信息。

3, 离开阶段

输入exit, 退出。

其他节点在本节点friends列表中删除对应节点。

Explanation

script.py 启动4个xterm 做为模拟节点

config.py 配置信息,包括seed 的 ip 和 port.

udp.py udp 工具包,收发信息的接口。

main.py 主要通讯逻辑。

通讯包的结构:

{
    "type":"input",
    "data":"string"
}

通过不同的type, 作出不同的响应。

Usage

在多个terminal中执行main.py, 启动多个节点。第一个启动的必须是config 中的种子节点。

例如:

python main.py 8891 id1

python main.py 8892 id2

python main.py 8893 id3

然后输入信息进行通信。

“hello”

“hello id2”

“exit”