littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于sgame框架的简单聊天系统

项目简介

本项目是一个简单的聊天系统服务端(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】