项目简介
本项目是一个简单的聊天系统服务端(schat)。互联网应用常出现服务端利维坦化问题,易导致用户信息污染与泄漏。本项目旨在将服务器的部署与运行交由用户自主控制(可能需一台云服务器),减少次群交流时隐私信息的泄漏。该服务端框架具备简单部署、迁移和恢复等特性,以最小成本实现简单化的群聊系统。
项目的主要特性和功能
主要特性
- 简单安装:尽量减少外部依赖库的使用。
- 简单部署:示例中全部业务进程在本机部署,修改配置文件可方便部署到不同机器。
- 简单迁移:原服务器系统失效后可方便新开服务器并迁移数据。
- 简单恢复:迁移后可维持原有的聊天数据及成员信息。
主要功能
以群聊为核心,功能围绕群展开: - 账号注册:以名字为Key申请注册账号。 - 创建群组:注册用户可创建聊天群和入群密码。 - 申请入群:可申请加入群。 - 审批申请:群主审批入群请求。 - 群内聊天:入群后可发送文本、图片等。 - 退出群聊:群员可主动退群。 - 踢出群聊:群主可踢出成员。 - 解散群组:群主可解散群。
安装使用步骤
环境安装
schat基于sgame框架,安装环境与sgame流程一致:
基础软件
- GO:下载go 1.14版本,解压、配置环境变量并创建目录。
- PROTOBUF:下载protobuf-all-3.11.4.tar.gz,解压、编译、安装并配置环境变量。
- REDIS:下载redis-5.0.8.tar.gz,解压、编译、配置主从模式并拉起实例,内存有限时可只保持一个实例。
必需库
- REDIGO:手动安装,包括下载、创建目录、解压、重命名和安装等步骤。
- SXX库:包含slog、stlv和proc_bridge,手动下载解压后执行安装脚本(需root权限)。
SCHAT安装
- 下载安装:下载schat-master.zip到本地,部署到指定目录并解压重命名。
- 配置通信:进入相关目录,执行初始化脚本、修改配置文件、编译并使用通信管理工具查看路由和连接情况。
- 编译进程:进入指定目录,执行初始化和编译脚本。
- 发布进程:进入指定目录,修改配置文件中的用户名,使用spush工具发布拉起进程,也可进行关闭、单独推送等操作,拉起进程顺利后可打开页面监控。
- 对外服务:若提供公网服务,需开放防火墙端口,修改dir配置、https证书和connect_serv的RSA密钥。
客户端演示
若使用android手机,可在release页面下载apk文件安装后,连接xxx:11802。
命令行演示
源码附带本地命令行客户端功能测试工具,进入schat/client/目录,编译生成chat_cli客户端。连接地址可通过浏览器或配置文件获取,启动客户端后可进行注册、登录、建群、加群、聊天、离线和发送文件等操作。
服务迁移
原服务器不可用时,迁移到新服务器步骤如下: - 在新服务器搭建schat的运行环境。 - 迁移基础redis数据:拷贝dump.rdb文件到新服务器并重新拉起redis实例。 - 迁移静态文件:打包原服务器各file_serv下的files目录,拷贝到新服务器对应目录并解包。 - 修改spush/tmpl/dir_serv.tmpl里的file_serv和conn_serv对外服务IP地址。 - 拉起新服务。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】