想做一个类似Spatial的网站,3D空间展示的部分我们已经通过Unity完成,且有对应接口,包括多人动作同步,语音同步,聊天同步,人物变换。需要找一个靠谱的技术团队完成网页端的功能,这也包括了服务端与数据库。
以下是详细的需求清单:
一、服务端需求
1. 用户管理
- 用户注册与登录:
- 支持邮箱、手机号注册。
- 提供第三方登录(如Google、Facebook、GitHub)。
- 实现密码找回功能。
- 用户信息管理:
- 存储用户基本信息(用户名、头像、邮箱、电话等)。
- 支持用户资料编辑和隐私设置。
- 权限管理:
- 定义不同角色(普通用户、管理员、空间创建者)。
- 根据角色分配不同的功能权限。
2. 虚拟空间管理
- 空间创建与配置:
- 允许用户创建虚拟空间并设置名称、描述、背景等。
- 支持上传自定义资源(图片、音频、视频等)。
- 空间访问控制:
- 提供公开、私有或密码保护的空间访问模式。
- 支持邀请码或链接分享功能。
- 空间数据存储:
- 存储空间的布局、对象位置、用户行为记录等信息。
- 支持历史版本回滚功能。
3. 实时通信
语音和视频通话:集成WebRTC实现低延迟的音视频通信。支持多路通话和屏幕共享。
文字聊天:提供实时文本消息功能。支持表情符号、文件传输和消息撤回。
- 通知系统:
- 发送系统通知(如新消息提醒、空间更新提醒)。
- 支持推送通知到移动设备。
4. 文件与媒体管理
- 文件存储:
- 支持用户上传和下载文件(PDF、PPT、视频等)。
- 提供文件预览功能。
- 媒体嵌入:
- 支持嵌入外部内容(如YouTube视频、Google Docs)。
- 提供播放控制接口。
5. 数据分析与统计
- 用户行为分析:
- 记录用户的访问频率、停留时间、互动行为等。
- 提供可视化报表给空间创建者。
- 系统性能监控:
- 监控服务器负载、网络延迟等指标。
- 提供告警机制以应对异常情况。
6. 安全与扩展性
- 身份验证与授权:
- 使用OAuth 2.0或JWT实现安全的身份验证。
- 确保敏感数据加密传输(TLS/SSL)。
- 可扩展架构:
- 设计微服务架构以支持模块化开发。
- 支持水平扩展以应对高并发场景。
二、网页端需求
1. 基础功能
- 用户界面:
- 提供简洁直观的UI设计。
- 支持深色模式和自定义主题。
- 导航与菜单:
- 包括主页、个人中心、空间列表、设置等功能入口。
- 提供搜索框方便查找空间或用户。
2. 虚拟空间展示
- 空间加载:
- 加载Unity生成的3D场景,并与服务端同步数据。
- 支持场景切换和动态更新。
交互控制:提供键盘、鼠标或触摸屏操作方式。支持第一人称视角和第三人称视角切换。
3. 实时协作
语音和视频通话:提供音视频通话的启动、暂停、结束按钮。支持静音、扬声器切换等功能。
文字聊天:显示聊天窗口,支持发送消息、表情和文件。提供聊天记录查看功能。
- 白板功能:
- 提供绘图工具(笔刷、颜色选择、橡皮擦等)。
- 支持多人同时编辑。
4. 文件与媒体展示
- 文件预览:
- 支持PDF、PPT、图片等常见格式的在线预览。
- 提供翻页、缩放等功能。
- 媒体播放:
- 支持音频、视频的播放控制(播放、暂停、进度条等)。
- 提供嵌入式内容的交互功能。
5. 社交互动
- 好友系统:
- 支持添加好友、发送消息。
- 提供好友列表和在线状态显示。
- 动态墙:
- 允许用户发布动态、评论和点赞。
- 提供动态排序和筛选功能。
6. 性能优化
- 跨平台兼容性:
- 确保在PC、平板和移动设备上的良好体验。
- 适配不同分辨率和浏览器环境。
- 加载速度优化:
- 减少初始加载时间,优先加载关键资源。
- 使用懒加载技术优化大文件加载。
7. 反馈与帮助
- 用户反馈:
- 提供反馈表单或聊天机器人收集用户意见。
- 支持截图或录制问题场景。
- 帮助文档:
- 提供详细的使用指南和FAQ。
- 支持在线客服或工单系统。
三、服务端与网页端的交互需求
1. 数据同步
- 用户数据同步:
- 用户登录后,从服务端获取其个人信息和空间列表。
- 实时同步用户状态(在线/离线)。
- 空间数据同步:
- 加载虚拟空间时,从服务端获取场景配置和对象位置。
- 实时更新用户在空间中的动作和交互。
2. 事件处理
- 实时事件推送:
- 使用WebSocket或Socket.IO实现实时事件通知。
- 示例:新用户加入空间、用户发言、对象移动等。
- 异步任务处理:
- 处理耗时任务(如文件上传、数据分析)并通过回调通知结果。
3. 错误处理
- 错误提示:
- 在网页端显示清晰的错误提示(如网络断开、权限不足)。
- 提供重试或联系支持的选项。
- 日志记录:
- 服务端记录所有错误日志以便排查问题。
- 提供调试接口供开发者使用。