公司局域网内的发布订阅通知系统,支持实时消息和定时提醒。
- 服务端: Node.js + WebSocket + Express
- 客户端: Electron
- 接收发布、订阅请求
- 处理消息分发
- 支持定时消息(指定时间发送)
- 用户认证(用户名密码登录)
- 消息持久化存储
- 自动定时保存数据
- 操作日志记录
- 跨平台部署
- 发布立即消息和定时消息
- 订阅相关主题
- 实时接收消息提醒
- 桌面系统通知
- 编辑/删除自己的定时消息
- 未读/已读消息分类
- 待办消息独立展示
- 断线自动重连(30分钟超时)
- 配置自动保存
- 跨平台桌面应用(Windows/Mac/Linux)
- 支持常驻后台运行
cd server
npm install配置服务端(复制示例配置并修改):
cp config.json.example config.json
# 编辑 config.json,添加实际用户信息启动服务端:
npm start服务端默认运行在:
- HTTP: http://localhost:3000
- WebSocket: ws://localhost:3000
cd client
npm install
npm start- 配置服务端用户:复制
config.json.example为config.json,添加用户列表 - 启动服务端:
cd server && npm start - 启动客户端:
cd client && npm start - 输入用户名和密码登录
- 订阅感兴趣的主题
- 发布消息或设置定时消息
{
"server": {
"port": 3000, // 服务器端口
"host": "0.0.0.0" // 监听地址
},
"log": {
"enable": true, // 是否启用日志
"dir": "./logs", // 日志目录
"maxFiles": 30 // 保留日志天数
},
"storage": {
"enable": true, // 是否启用数据持久化
"dir": "./data", // 数据存储目录
"autoSaveInterval": 5 // 自动保存间隔(分钟)
},
"users": [ // 用户列表
{
"username": "用户名",
"password": "密码"
}
]
}客户端配置自动保存到本地,包括:
- 服务器地址
- 用户名
- 密码
- 自动订阅的主题
- 消息历史:
data/messages.json- 所有消息记录 - 定时消息:
data/scheduled-messages.json- 定时消息列表 - 日志文件:
logs/server-YYYY-MM-DD.log- 每日日志 - 自动保存: 每 5 分钟自动保存一次数据
- 关闭保存: 服务器关闭时保存所有数据
配置文件由 Electron 自动管理,重启应用后自动加载上次配置并尝试自动连接。
- 断线后自动尝试重连
- 重连间隔:3 秒
- 最大重连时长:30 分钟
- 主动断开不触发重连
- 重连期间显示进度和提示
config.json包含敏感信息,已加入.gitignoredata/目录包含运行时数据,已加入.gitignorelogs/目录包含操作日志,已加入.gitignore- 请勿将
config.json提交到代码仓库
- 未读消息:即时消息和到时的定时消息,标记为未读
- 已读消息:点击阅读后移入历史记录
- 待办消息:未到时的定时消息,独立显示在上方卡片中
- 设置未来时间发送消息
- 到时自动发布并通知所有订阅用户
- 编辑自己的定时消息
- 删除自己的定时消息
- 服务端重启后自动恢复未过期的定时任务