我正在构建一个允许团队协作的网络应用程序。也就是说,团队中的用户将能够编辑共享数据,并且他们的编辑应该被推送到其他连接的团队成员。
Socket.io 房间是实现这一目标的合理方式吗?
即(粗略地说):
- 所有连接的团队成员都将加入同一个房间(在第一个团队成员连接时动态创建)。
- 收到的任何编辑 服务器会广播到房间(除了被持久化, ETC)。
- 在客户端,收到的任何编辑都将用于更新 相应地在浏览器中显示共享数据。
显然,它需要以某种方式处理对同一数据的同步更新。
这看起来是一种合理的方法吗?
我是否需要考虑更稳健的方法,例如让 Redis 数据库在编辑 session 期间保存共享数据(定期将其“刷新”到持久性数据库)?
最佳答案
您只需要 Socket.IO(带有 RedisStore)和 Express.js。使用 Socket.IO,您可以设置房间,并将每个房间的访问权限限制为只有经过授权的用户。 使用 Redis,您可以使您的应用在进程外扩展。
供您阅读的有用链接:
Handling Socket.IO, Express and sessions
Scaling Socket.IO
How to reuse redis connection in socket.io?
socket.io chat with private rooms
How to handle user and socket pairs with node.js + redis
Node.js, multi-threading and Socket.io
关于node.js - 使用 Socket.io 构建 Web 应用程序以支持团队协作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8592943/