【问题标题】:One user changes can reflect to other users in same time using nodejs一个用户的变化可以使用nodejs同时反映给其他用户
【发布时间】:2018-10-05 13:51:17
【问题描述】:

我有一个react jsnode jsmongoDB 应用程序。我在 mongoDB 中有一个集合。

Senario:假设有 3 个用户(A、B、C)同时登录。他们都在同一时间访问同一个集合。让 C 从 UI 更改集合中的某些内容。

  1. 那么 A 和 B 如何同时访问 C 在 UI 中所做的更改?
  2. 在这种情况下,最好的方法应该是什么?

【问题讨论】:

  • 您的意思是希望更改在每个人的屏幕上实时更新?考虑尝试 socket.io
  • 另一种方法可能是客户端定期重新下载整个集合并检查更改,具体取决于集合的大小,或者存储集合的最后更新日期的地方,如果该日期更晚比他们最近的刷新,然后重新下载数据。
  • @TKoL for nodejs 是否有任何 socket.io 插件或已经在 nodejs 中?

标签: javascript node.js mongodb reactjs


【解决方案1】:

最简单的解决方案应该是使用 webSocket(你可以试试 socketIo)。通过这种方式,您可以告诉应用程序中的所有用户“听取”一些更改。作为 ToDo 列表中的示例,用户 C 将添加一个待办事项,服务器会收到此添加的通知,并将通过 Web 套接字向所有监听此特定事件的用户发出。 socket.io。希望我的回答对您有所帮助。

有几种方法可以使用 Socket.io。您可以从客户端向服务器发出,服务器将向其他客户端发出。 示例:

client Side (user adding a ToDo): socket.emit('message', YourTODOVariable);
Server Side: socket.on('message',function(YourTODOVariable){
//do other stuff here;
socket.broadcast.to('ToDo', YourTODOVariable)
})
Client Side (other Users): socket.on('ToDo', function(YourTODOVariable){
ToDo.push(YourTODOVariable) //-> like this everybody got the new variable.
})

我认为这是一个非常简单的示例,但我认为您可以理解。

我个人更喜欢的另一个解决方案是关联节点事件。例如,一个新的 Http 请求将触发一个节点事件,并将触发一个 socket.emit 到所有其他正在侦听的客户端。

这个post也可以帮助你。快乐编码:)

【讨论】:

  • 你能给我一些编码的例子吗?
【解决方案2】:

因此,您的场景有多种解决方案,例如:

  1. Socket.IO:在此解决方案中,您必须管理所有客户端套接字,一旦服务器发出消息,所有注册的客户端都会收到通知。

  2. React Redux:每 x 毫秒对数据库进行一次采样,并更新应用中的 store-state,因此一旦发生更改,所有注册到 state 的组件都会得到更新。 (这是一个比选项 1 更扁平的解决方案。但有点难看)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2011-08-06
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多