一个用户更改可以使用nodejs

时间:2018-04-25 07:20:19

标签: javascript node.js mongodb reactjs

我有react jsnode jsmongoDB申请。我在mongoDB中有一个集合。

Senario:我们说同时有3个用户( A,B,C )登录。他们都在同时访问相同的集合。让C从UI中改变集合中的某些东西。

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

2 个答案:

答案 0 :(得分:3)

最简单的解决方案应该是使用webSocket(您可以尝试使用socketIo)。通过这种方式,您可以告诉应用中的所有用户“收听”某些更改。作为待办事项列表中的示例,用户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也可以为您提供帮助。快乐编码:)

答案 1 :(得分:1)

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

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

  2. React Redux:每隔x毫秒对数据库进行一次采样,并在应用程序中更新存储状态,因此一旦更改生效,状态的所有已注册组件都将更新。 (这是比选项1更扁平的解决方案。但有点难看)