NeoChat - 专为机房内网环境开发的轻量聊天室(V0.2)
seve_ · · Tech. & Eng.
在机房环境中,同学们在交流与讨论问题时常面临沟通不畅的困境。众所周知,大多数 OIer 无法使用手机,也无法登录微信或 QQ,而现有的公网聊天室又存在一定的隐私隐患。因此,搭建一个本地聊天室具有重要意义。
此外,聊天室还有云剪贴板/私信功能,在 luogu 访问不畅或断网环境下可以提供良好的使用体验
本文介绍的 NeoChat
是一个开源、轻量且易部署的聊天室项目,由 seve_ 开发,具备较高的并发性能与部署灵活性。项目地址如下:
GitHub 项目地址
后端基于 C++
+ sqlite
+ cpp-httplib
实现,前端使用原生 JavaScript,整体支持高并发与多线程处理。
功能概览
如图所示:
- 支持一个服务端创建多个聊天室;
- 支持私信功能
- 支持隐藏、锁定聊天室及密码保护;
- 内网云剪贴板,可以使用密码保护,自动语言识别/语法高亮
- 支持发送多行内容,兼容
\LaTeX 与 Markdown 格式; - 支持图片消息发送。
特点总结
-
极致轻量:
- 后端内存占用不超过 7 MB;
- 磁盘占用不超过 10 MB;
- 前端带宽需求低于 10 kbps,内存仅占用 10 MB。
-
高性能表现:
- 经过机房的测试,在 i5-12400 的测试环境下,支持
1000 用户同时注册与发送消息时,CPU 占用率低于3% ,磁盘占用不超过5% 。
- 经过机房的测试,在 i5-12400 的测试环境下,支持
-
一键部署:
- 支持在任意 Windows 系统上开箱即用,部署简洁。
-
安全性设计:
- 支持 HTTPS 加密及公网部署(不推荐);
- 内置基础注入攻击防护机制。
快速部署
访问以下链接下载最新版:
点击前往 GitHub Releases 页面
部署步骤:
- 解压文件;
- 运行主程序(
.exe
文件); - 在控制台输入
start
启动服务器; - 输入
load
加载配置文件;
兼容系统:
- Windows 7 / 10 / 11
- Linux
如遇问题可在 GitHub 提交 Issue。
如何访问?
请确保服务器机(即运行该程序的电脑)防火墙允许服务端通过,并保证客户机与服务器处于同一内网下。直接在浏览器中访问服务端 IP 即可。
查看电脑内网 IP 可在 cmd 中输入 ipconfig
查看。通常为 192.168.x.x
。
定制化
可以修改 HTML/CSS 来实现更多主题或视觉效果,不会也没关系,可以面向 GPT 编程。
使用文档
所有指令均通过控制台输入,区分大小写。部分指令需要附带参数,参数之间请以空格分隔。
注意事项
- 数据库存储路径为
./database.db
; - 用户密码使用哈希在数据库中存储,但聊天室密码在后端使用明文存储,请妥善保管;
- 默认监听地址为
0.0.0.0:443
,且在0.0.0.0:80
有 HTTP 重定向服务器,可在配置中自定义; - 日志及错误均自动记录,请参考
log
文件内容; - 不建议在公网暴露未加密的服务端口,应启用 HTTPS 并配合防火墙;
- 同目录下的证书为随意签发,不受信任。
代码
完整代码可在 GitHub 上进行浏览和下载
使用的开源库
- cpp-httplib
- jsoncpp
- openssl
网站 logo 图标采用 Minecraft IC2 材质包中的资源。
项目中可能存在部分 AI 生成的代码。