Как стать автором
Обновить

Комментарии 12

С одной стороны вроде статья больше про вебсокеты. Но все же, зачем постоянно получать время с сервера, если достаточно знать часовой пояс?

У пользователя по (куче причин) может быть несинхронизированное время на компе. Время - это вообще постоянный источник багов и хаков в реальной разработке.

У пользователя сайт по https не откроется если будет время сбито :) вот вообще не встречал кейса что бы время было сбито у клиентского устройства - это первое. А второе, что это вообще за фигня полагаться на данные клиента? А если я часы переведу нарошно? А потом удивляемся низкому качеству веб приложений.

Разверну мысль. Кидаем запрос любой, забираем https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Date заголовок из ответа, строим оффсет/таймзону от времени клиента и времени сервера - показываем время учитывая этот офсет/таймзону. Все!

один раз запросили время с сервера (плюс временная зона), запомнили. рассчитали дельту со временем на клиентской стороне. далее, при отображении, учитываем эту дельту.

зачем постоянно получать время с сервера?

Я вообще не понимаю почему не можем показывать время локальное. Но будем исходить из того, что дизайн приложения такой из-за чего-то, что я не знаю

Нужен был небольшой пример использования веб сокетов и отправка времени это как раз небольшой пример.

Позже будет пост с таймзонами и там будет пример общего кода переключением таймзон для любых данных которые отправляются по веб сокетам и он будет показан на примере как раз этого веб сокета с временем.

Стать прекрасна. Я как сеньор в JS/TS с бэкграундом техлида Ангуляр и node, почти всё понял, кроме того зачем в демо nz-zorro, можно же для демо и нативные элементы, хотя это вопрос вкуса.

А вот новичкам в ангуляр тема будет огонь: смотрите парни как вы сможете, если... разберётесь.

ЗЫ.

    this.appRestService
      .appControllerGetData()
      .pipe(
        tap((result) => this.serverMessage$.next(result.message)),
        untilDestroyed(this)
      )
      .subscribe();

А не проще сразу (без сабскрайба) и мар вместо тап?

this.serverMessage$ = 

В signOut тоже грязненько, или сейчас так пишут?

Map ожидает что будет замена на результат функции. Без сабскрайба не запустится цепочка так как подписантов нет - ей не зачем исполняться.

Так на sendMessages$ есть же подписка в шаблоне

Ну есть и есть подписка в шаблоне на serverMesaage$, учитывая что это behaviorSubject то подписка вызовется два раза - один для дефолного значения сразу как шаблон подпишется и второй раз уже в новом тике евентлупа когда данные с сервера придут и проставятся через next в tap. Но без пустого subscribe ни map ни tap не вызовутся, потому что никто не слушает subject, а следовательно ему не нужно выполняться. Это я еще молчу о том что пора на сигналы переходить.

Вариантов улучшить там очень много)

Этот пост является частью цикла постов по созданию некого фулстек бойлерплейта https://habr.com/ru/search/?q=[nestjsmod]&target_type=posts&order=date, и я просто основные моменты пишу в коде и в виде постов на хабре по пути оформляю, возможно когда весь проект напишется, пойдут статьи по поводу рефакторинга.

А почему именно написал с сабскрайбом , этот участок кода идет с поста где был простой пример интеграции Ангулар и Нест https://habr.com/ru/articles/835168/

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории