# peerchat **Repository Path**: B24D/peerchat ## Basic Information - **Project Name**: peerchat - **Description**: 基于go-libp2p的终端P2P聊天室应用 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2022-05-08 - **Last Updated**: 2025-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PeerChat ![Banner](banner.png) ### 基于go-libp2p的终端P2P聊天室 **版本: 1.1.0** **平台: Windows, Mac OSX 及 Linux** **语言: Go 1.16** ## Overview 本应用受 **libp2p** pubsub 中聊天室示例启发而开发,是功能更全面的改进版 使用 *Kademlia DHT* 进行peer discovery 和peer routing 应用支持相同或不同网络中的节点进行通信,用户可随意切换聊天室而无须重启应用,也可以随时修改用户昵称 ## 依赖 ### libp2p **libp2p**: **IPFS**衍生的模块化网络栈库 **PeerChat**的 P2P 和 GossipSub 层是基于Go实现的**libp2p** [**go-libp2p Repository**](https://github.com/libp2p/go-libp2p) [**libp2p Documentation**](https://docs.libp2p.io/) ### tview **tview**: Go实现的终端UI库 **PeerChat**的 UI 层基于**tview** 和 **tcell** [**tview Repository**](https://github.com/rivo/tview) [**tcell Repository**](https://github.com/gdamore/tcell) ## 安装 - 需要 Go v1.16 更高版本 [Install Go](https://golang.org/doc/install) - 需要使用 ``make`` 命令, Windows可使用 ``choco install make``安装 - 克隆仓库并进入目录 ```bash git clone https://gitee.com/B24D/peerchat.git cd peerchat ``` - 运行安装命令 (Windows用Git Bash) ```shell make install ``` - 安装完成,可使用以下命令启动 ```shell peerchat ``` ## 使用 若 **PeerChat** 启动时无参数,默认使用 *newuser* 进入 *lobby* 聊天室,可使用参数``-user`` 和``-room`` 进行修改 以下命令即使用用户名 *bender* 进入 *planet-express* 聊天室 ```shell peerchat -user bender -room planet-express ``` peer discovery 方式可使用 ``-discover`` 参数修改. 合法值为 *announce* 和*advertise*. 应用默认 *advertise* .此值应在节点未使用默认连接时修改 使用 ``-log`` 参数修改应用启动运行时的日志级别. 合法值为 *trace*, *debug*, *info*, *warn*, *error*, *fatal* , *panic*. 应用默认 *info*. 此值仅用于开发和debug ## 后续开发 - 支持 QUIC 和 WebSocket 传输 - 用 Protocol Buffers代替 JSON 进行消息编码 - 用户修改用户名时在聊天室进行通知 - 支持密码保护的聊天室