NeoChat - 专为机房内网环境开发的轻量聊天室(V0.2)

· · Tech. & Eng.

在机房环境中,同学们在交流与讨论问题时常面临沟通不畅的困境。众所周知,大多数 OIer 无法使用手机,也无法登录微信或 QQ,而现有的公网聊天室又存在一定的隐私隐患。因此,搭建一个本地聊天室具有重要意义。

此外,聊天室还有云剪贴板/私信功能,在 luogu 访问不畅或断网环境下可以提供良好的使用体验

本文介绍的 NeoChat 是一个开源、轻量且易部署的聊天室项目,由 seve_ 开发,具备较高的并发性能与部署灵活性。项目地址如下:

GitHub 项目地址

后端基于 C++ + sqlite + cpp-httplib 实现,前端使用原生 JavaScript,整体支持高并发与多线程处理。

功能概览

如图所示:

特点总结

  1. 极致轻量

    • 后端内存占用不超过 7 MB;
    • 磁盘占用不超过 10 MB;
    • 前端带宽需求低于 10 kbps,内存仅占用 10 MB。
  2. 高性能表现

    • 经过机房的测试,在 i5-12400 的测试环境下,支持 1000 用户同时注册与发送消息时,CPU 占用率低于 3%,磁盘占用不超过 5%
  3. 一键部署

    • 支持在任意 Windows 系统上开箱即用,部署简洁。
  4. 安全性设计

    • 支持 HTTPS 加密及公网部署(不推荐);
    • 内置基础注入攻击防护机制。

快速部署

访问以下链接下载最新版:

点击前往 GitHub Releases 页面

部署步骤:

  1. 解压文件;
  2. 运行主程序(.exe 文件);
  3. 在控制台输入 start 启动服务器;
  4. 输入 load 加载配置文件;

兼容系统:

如遇问题可在 GitHub 提交 Issue。

如何访问?

请确保服务器机(即运行该程序的电脑)防火墙允许服务端通过,并保证客户机与服务器处于同一内网下。直接在浏览器中访问服务端 IP 即可。

查看电脑内网 IP 可在 cmd 中输入 ipconfig 查看。通常为 192.168.x.x

定制化

可以修改 HTML/CSS 来实现更多主题或视觉效果,不会也没关系,可以面向 GPT 编程。

使用文档

所有指令均通过控制台输入,区分大小写。部分指令需要附带参数,参数之间请以空格分隔。

注意事项

  1. 数据库存储路径为 ./database.db
  2. 用户密码使用哈希在数据库中存储,但聊天室密码在后端使用明文存储,请妥善保管;
  3. 默认监听地址为 0.0.0.0:443,且在 0.0.0.0:80 有 HTTP 重定向服务器,可在配置中自定义;
  4. 日志及错误均自动记录,请参考 log 文件内容;
  5. 不建议在公网暴露未加密的服务端口,应启用 HTTPS 并配合防火墙;
  6. 同目录下的证书为随意签发,不受信任。

代码

完整代码可在 GitHub 上进行浏览和下载

使用的开源库

网站 logo 图标采用 Minecraft IC2 材质包中的资源。

项目中可能存在部分 AI 生成的代码。