本项目立项旨在解决中小学校园中师生之间信息传递效率低、通知无法实时触达的问题。传统方式依赖口头传达、纸质通知或微信群,存在消息遗漏、无法追溯、缺乏针对性等痛点。
业务场景为初中校园:多位教师分别负责不同年级和班级,教师需向指定班级或指定学生发送文字或语音指令(如"XXX下课后到办公室");各班教室安装学生端,实时接收指令并全屏弹出通知。系统支持教师注册管理班级、学生端班级密码保护、班级人员状态管理(正常上课/生病请假/有事出行)。
点击空白处退出提示
本项目立项旨在解决中小学校园中师生之间信息传递效率低、通知无法实时触达的问题。传统方式依赖口头传达、纸质通知或微信群,存在消息遗漏、无法追溯、缺乏针对性等痛点。
业务场景为初中校园:多位教师分别负责不同年级和班级,教师需向指定班级或指定学生发送文字或语音指令(如"XXX下课后到办公室");各班教室安装学生端,实时接收指令并全屏弹出通知。系统支持教师注册管理班级、学生端班级密码保护、班级人员状态管理(正常上课/生病请假/有事出行)。
系统分为教师端、学生端和服务端三部分,共 12 个功能模块。
教师端:账号注册登录(含记住密码和历史账号)、班级管理(添加/移除所教班级)、选择班级及学生发送指令、支持文字和语音两种消息类型、语音录制与发送、消息撤回(带确认弹窗)、消息筛选(按班级、按类型)、消息按日期分组展示、消息详情查看、发送记录持久化。
学生端:班级密码注册与登录、实时接收教师指令并全屏弹窗 + 提示音、消息列表支持日期分组和类型筛选、未读消息蓝色标记、消息详情查看、向教师发送消息、班级人员管理(增删学生并标记状态:正常上课/生病请假/有事出行)。
服务端:Node.js + Express + Socket.IO 架构,SQLite 数据持久化,支持 HTTP 轮询兜底和 Socket 实时双通道,消息撤回实时推送全班同步。
我独立负责整个项目的全栈开发,包括需求分析、数据库设计、前后端编码和联调测试。
技术栈:前端 Electron + React 18 + TypeScript + Vite,后端 Node.js + Express + Socket.IO,数据库 SQLite(better-sqlite3),实时通信采用 WebSocket + HTTP 轮询双通道架构。
架构亮点:
Socket.IO 房间机制实现班级隔离,教师和学生通过 class:{id} 房间精准收发消息
实时推送 + 3 秒 HTTP 轮询双保险,解决断连丢消息问题
MediaRecorder API 实现浏览器端语音录制,Base64 编码存储无需额外文件服务
自定义下拉组件 + 级联选择(年级→班级),36 个班级懒加载
消息撤回支持实时 Socket 推送同步,所有在线学生端即时移除
难点攻克:Socket 断连重连后需重新认证加入房间,通过 connectId 递增机制触发面板重新注册监听器解决;语音录制的异步竞态问题通过 onstop 回调中将 Blob 存入状态而非 ref 解决。





评论