Туда отправляет JSON в котором хранятся данные строки, а бекенд отвечает отправкой этой строки всем остальным клиентам, это в случае изменения строки.
Вообще куда интереснее как раз увидеть момент, когда айдишки начинают отличаться. То есть добавление новых строк. Во время изменения айдишки уже меняться не должны. Во время удаления тоже.
У нас, например, отправляется что-то типа
{
id:"clientSideId",
operation:"insert",
data:[ /* все данные */ ]
}
а бэкенд отвечает
{
id:"clientSideId",
operation:"insert",
data:[ /* те же данные, но теперь с айдишкой с бэкенда */ ]
}
и поскольку и в обоих объектах есть та временная клиентская айдишка, ее, если надо, можно подменить на клиенте и таким образом не допустить, чтобы у одних и тех же данных были разные айди
В данный момент на сервере вообще не устанавливается ID , я пытался реализовать просто замену на клиенте и столкнулся с проблемой что ID строк отличался на клиентах и вопрос темы был именно о том как это исправить, т.к я не понимаю как установить ID строк на сервере и в какой момент это делается и точно так же, как заменить ID на клиенте, чтобы ID клиента соответствовал ID бекенда.
C ситуацией, когда у одних данных разные айдишки, нельзя как-то справиться, кроме как ресетнуть все данные и не допускать ее больше. Ее можно предотвратить:
- на клиенте 1 возьмите айдишку нового добавленного айтема и вместе с ней отправьте json-ину на бэкенд
- вместе с этой айдишкой он пришлет эту же строку остальным клиентам
- с ней они добавят себе эту строку и не будут генерировать свои автоматические айди
клиент, если не дать ему айдишку в данных нового айтема, ее сгенерирует, потому что без айдишек нельзя
но вообще то, что бэкенд при добавлении себе строки в таблицу никакого идентификатора ей не присваивает, вероятно, странно (по крайней мере все ДБ, с которыми я сталкивалась, или случайные присваивают - nedb - или инкрементируют предыдущую - mysql, sqlite, oracle)
как установить ID строк на сервере и в какой момент это делается
обычно база сама это делает. добавляется строка - и каким-то образом (в зависимости от языка бэкенда) возвращается / добывается ее айдишка (и потом ее можно вернуть клиентам в ответе).
Имеет ли смысл устанавливать ID на сервере в массив данных JSON?
А то решил попробовать установить ID на стороне сервера, по итогу клиент все равно присылает рандомный ид строки.
connection.query("SELECT * FROM sitebase",
function (err, results, fields) {
jsonvalues = [];
if (results.length > 0)
{
for (var i = 0; i < results.length; i++)
{
jsonvalues.push([results[i].url, results[i].tc, results[i].Contacts, results[i].Traffic, results[i].Category, results[i].Comments, results[i].Users, results[i].visits, results[i].TOS, results[i].ppv, results[i].Bounce_Rate, results[i].geo_ru])
jsonvalues[i].id = i+1;
}
jsonvalues = JSON.stringify(jsonvalues);
}
update = null
}
);
This is so great! Thank you.