Как обрабатывать тайм-ауты соединения с серверными методами? Я использую метеор большую часть времени для мобильных приложений ios/android (без веб-приложений, реальных версий магазина приложений), и мобильные пользователи часто имеют тайм-ауты соединения. Поэтому иногда они не получают обратной связи, когда нажимают кнопку, потому что соединение слишком плохое.
например У меня есть метод только на стороне сервера для вставки нового document
со специальным text
в коллекцию MyTextCollection
поэтому мои методы выглядят примерно так
Meteor.methods({
addTextToMyTextCollection: function(text) {
//some input checks and error stuff here
//if something is wrong It will throw new Error.
...
//everything is fine so insert text into collection
MyTextCollection.insert({text:text});
return someResult
}
});
на стороне клиента я бы позвонил
Meteor.call("addTextToMyTextCollection", myTextILikeToStore, function(error, result){
if (error) {
// I have an error
else {
// I have a result
}
});
Моя проблема в том, что я понятия не имею, как справиться с плохим соединением Wi-Fi / 4G и т. Д. Здесь, чтобы дать пользователям обратную связь (например, загрузка, подождите, или ваше соединение прервано, попробуйте еще раз). Метод просто возвращает Error
, когда что-то не так с моим permission
или с моим text
, который я использовал в качестве параметра. В противном случае он возвращает мне result
.
Можно ли ограничить время на стороне клиента для выдачи ошибки после того, как вызов метода ничего не возвращает?
Что происходит, когда моему устройству удалось вызвать метод addTextToMyTextCollection
, но соединение было прервано при получении результата/ошибки? Как я могу справиться с этим для моего пользовательского интерфейса?
Мне не нравится оптимистичный пользовательский интерфейс (вызов метода на стороне сервера/клиента), потому что это не всегда ожидаемый результат (например, запрашивание только серверной информации, которую клиент не может знать)