Ajax 决策树的连续转移:REST与websocket

Ajax 决策树的连续转移:REST与websocket,ajax,node.js,rest,websocket,tree,Ajax,Node.js,Rest,Websocket,Tree,我正在开发一个web应用程序(后端是用Node.js和mongo db编写的),用户可以在其中做出、记录和描述决策。我用一个树形结构来表示它,如下所示 { tree: { root: Node, nodes: [{ // keeping a reference to all nodes of the tree index: Number, node: Node }], lastIndex: Number } } 节点在哪里

我正在开发一个web应用程序(后端是用Node.js和mongo db编写的),用户可以在其中做出、记录和描述决策。我用一个树形结构来表示它,如下所示

{ 
  tree: {
    root: Node,
    nodes: [{   // keeping a reference to all nodes of the tree
      index: Number,
      node: Node
    }],
    lastIndex: Number
  }
}
节点在哪里

{
  parent: Node,
  children: [Node],
  data: {
    d1: String,
    d2: [String],
    d3: Number,
    d4: Boolean
    // more data fields as above, probably not more than 10-20 fields per node
  },
  index: Number   // this node's index in the tree's node map
}
在web应用程序上(即在浏览器中),用户可以执行以下操作:

  • 创建一棵新树
  • 将节点添加到树中
  • 编辑节点的数据
  • 删除完整的子树
  • 更改节点子节点的顺序
  • 加载完整的树
主要操作是添加新节点并对其进行描述(填写数据字段)。这主要可以通过鼠标输入完成,因此如果用户快速单击,他每秒最多可以创建5-10个节点

我希望将这些修改实时发送到服务器,并将它们存储在数据库(mongo db)中。(我也在考虑在页面上显示反馈,当前状态保存在服务器上,但我认为这将在以后出现)

所以归结起来就是这些要求:

  • 大多数情况下,我将处理nodes表上的创建和更新操作(每个用户每秒可能有许多创建/更新)
  • 从服务器发送到客户端的数据不会太多(除非加载了新树)
那么,在我的例子中,使用REST调用或websocket连接更好吗


非常感谢您的帮助

也许这取决于您是否希望在客户端和服务器之间进行完全异步的通信,web套接字将为您提供这些通信,但您确实需要添加一个websocket服务器。@Berniev websocket与ajax之间的异步有何不同?在我的场景中有什么好处?websocket服务器不是我在node.js中声明的另一个路由吗?有了websocket,客户端或服务器可以随时发送数据,我只需要客户端发送数据,所以切换到websocket没有任何好处?不是更快吗?在同一棵树上,同一用户每秒可以有多篇文章/更新。这可能取决于您是否希望在客户端和服务器之间进行完全异步的通信,哪些web套接字将提供给您,但您确实需要添加一个websocket服务器。@Berniev websocket与ajax的异步性有何不同?在我的场景中有什么好处?websocket服务器不是我在node.js中声明的另一个路由吗?有了websocket,客户端或服务器可以随时发送数据,我只需要客户端发送数据,所以切换到websocket没有任何好处?不是更快吗?每秒可以有来自同一用户在同一树上的多个帖子/更新。