node.js - 使用 Socket.io 构建 Web 应用程序以支持团队协作

标签 node.js websocket redis socket.io

我正在构建一个允许团队协作的网络应用程序。也就是说,团队中的用户将能够编辑共享数据,并且他们的编辑应该被推送到其他连接的团队成员。

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/

相关文章:

node.js - Null SpeechletResponse 问题 (Alexa)

javascript - 如何访问另一个嵌套回调函数内的回调变量?

php - 如何访问 Ratchet php 周期性循环和客户端在应用程序内发送?

javascript - 如何在javascript中获取redis中的所有键和值?

redis - Redis安全性弱但无所谓?

python - 如何在没有 -A 选项的情况下运行 celery status/flower?

javascript - 如何在 Sequelize.then 中执行 bcrypt.compare?

node.js - Nodejs 在缓冲区和字符串之间转换图像

javascript - WebSocket URL 变量未定义

node.js - Socket.io 和现代浏览器不工作