LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Во-первых, подумай о том, нельзя ли черновики всё-таки сохранять в клиенте. Потому как сохранять их на сервере можно для двух целей: 1) хочешь смотреть что они там пишут даже неотправленное, 2) хочешь шарить черновики между разными экземплярами клиента одного аккаунта. Тебе нужно что-то из этого? Хорошо, если даже нужно, ты уверен что это нужно каждые две секунды? Можно, например, сохранять локально в клиенте хоть каждые полсекунды, а на сервер отправлять, например, раз в 10 секунд или даже больше. Тогда в случае «умер клиент, а юзер решил переподключиться с другого устройства» у него может что-то потеряться, но в пределах последних 10 (или сколько выберешь) секунд, а ситуация эта редкая - можно в целом не беспокоиться.

Во-вторых, если сохраняем на сервере (всё или часть, уже не важно), синхронизацию после сбоя всё равно можно возложить на клиент. В черновике надо указывать какой-нить серийный номер (или uuid), а после его отправки - сохранять его в таблице сообщений. И если клиент видит uuid своего текущего черновика в логе отправленного - значит черновик уже успели отправить и он не нужен. Останется только предусмотреть разные мелочи про параллельную работу двух клиентов с одним черновиком (если это разрешено), но всё это можно делать на клиенте и дополнительной нагрузки на сервера не создаст.

Исходная версия firkax, :

Во-первых, подумай о том, нельзя ли черновики всё-таки сохранять в клиенте. Потому как сохранять их на сервере можно для двух целей: 1) хочешь смотреть что они там пишут даже неотправленное, 2) хочешь шарить черновики между разными экземплярами клиента одного аккаунта. Тебе нужно что-то из этого? Хорошо, если даже нужно, ты уверен что это нужно каждые две секунды? Можно, например, сохранять локально в клиенте хоть каждые полсекунды, а на сервер отправлять, например, раз в 10 секунд или даже больше. Тогда в случае «умер клиент, а юзер решил переподключиться с другого устройства» у него может что-то потеряться, но в пределах последних 10 (или сколько выберешь) секунд, а ситуация эта редкая - можно в целом не беспокоиться.

Во-вторых, если сохраняем на сервере (всё или часть, уже не важно), синхронизацию после сбоя всё равно можно возложить на клиент. В черновике надо указывать какой-нить серийный номер (или uuid), а после его отправки - сохранять его в таблице сообщений. И если клиент, видит uuid своего текущего черновика в логе отправленного - значит черновик уже успели отправить и он не нужен. Останется только предусмотреть разные мелочи про параллельную работу двух клиентов с одним черновиком (если это разрешено), но всё это можно делать на клиенте и дополнительной нагрузки на сервера не создаст.