项目描述
翻译从技术上讲,我们期望使用 WebSocket 传输进行实时交付,并提供合理的回退选项以及在连接丢失时的自动重连。消息必须保存在数据库中,以便在重新打开对话时正确加载聊天历史,并且即使在不稳定的网络上,交付也应有序且去重。我们需要输入指示器、每条消息的“已送达”和“已读”状态、每个聊天的未读计数器和在线状态(在线,最后一次查看)。附件很重要:用户应该能够发送带有预览和安全大小限制的图像和文档。当接收者离线或标签页关闭时,推送通知会提醒他们有新消息。后端应依赖于我们当前的用户账户和访问权限,而不是引入单独的身份验证系统。
我们认为安全性和防止滥用是任务的一部分:与活动会话绑定的身份验证套接字连接、权限检查(用户仅阅读他们参与的线程)、显示消息时的 XSS 输入清理,以及针对垃圾邮件的基本速率限制。我们期望在我们当前的技术栈中提供干净的文档代码、简要的集成说明和主要场景的测试。
— 私人和群组聊天与参与者管理
— WebSocket 交付与重连和离线回退
— 输入指示器、交付/已读状态、未读计数器、在线状态
— 带有预览和大小限制的图像和文档附件
— 离线接收者的推送通知
— 历史、排序、去重和消息持久性
— 会话绑定的套接字、每线程权限检查、XSS 保护、速率限制