#ajax #node.js #rest #websocket #tree
#ajax #node.js #rest #websocket #дерево
Вопрос:
Я работаю над веб-приложением (серверная часть написана на 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
}
В веб-приложении (т. Е. в браузере) пользователь может выполнять следующие действия:
- Создайте новое дерево
- Добавление узла в дерево
- Редактирование данных узла
- Удалить полное поддерево
- Измените порядок дочерних элементов узла
- Загрузить полное дерево
Основным действием будет добавление новых узлов и их описание (заполнение полей данных). В основном это можно сделать с помощью мыши, поэтому, если пользователь быстро нажимает, он может создавать до 5-10 узлов в секунду.
Я хочу отправить эти изменения в режиме реального времени на сервер и сохранить их в базе данных (mongo-db). (Также я подумываю о том, чтобы показать обратную связь на странице, что текущее состояние сохраняется на сервере, но я думаю, что это произойдет позже).
Итак, все сводится к следующим требованиям:
- Большую часть времени я буду иметь дело с действиями по созданию и обновлению в таблице узлов (возможно, много созданий / обновлений на пользователя в секунду).
- Не будет много данных, отправляемых с сервера клиенту (за исключением случаев, когда загружается новое дерево).
Итак, в моем случае лучше использовать вызовы REST или соединение с websocket?
Любая помощь действительно ценится!
Комментарии:
1. Возможно, это зависит от того, хотите ли вы полностью асинхронную связь между клиентом и сервером, которую вам предоставят веб-сокеты, но вам нужно добавить сервер websocket.
2. @Berniev Чем асинхронность websockets отличается от ajax? Каковы были бы преимущества в моем сценарии? И не является ли сервер websocket просто еще одним маршрутом, который я объявляю в node.js ?
3. С помощью websockets клиент или сервер могут отправлять в любое время
4. Мне нужно только, чтобы клиент отправлял данные, поэтому нет никакой пользы в переходе на websockets? Разве это не быстрее? В одном дереве может быть несколько сообщений / обновлений от одного и того же пользователя в секунду.