Size: a a a

Angular - русскоговорящее сообщество

2021 April 03

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
Polishko Kostiantyn
Всем привет, есть вопросик по вебсокетам. Я подключаюсь на 2х роутах к нему. Нужно ли закрывать соеденение с вебсокетом когда я нахожусь не на том роуте где он работает? Есть 5 вкладок (табов) на 2х работает вебсокет при переходе на них он конектится. Но нужно ли его закрывать когда я ухожу с них на таб где он не нужен? Достаточно ли просто дестроить подписку при выходе?
мне почему-то кажется, что если тебя интересует постоянное соединение, то надо подключиться в сервисе и хранить хендлер там. наружу высунуть ридонли обсервабл с которого можно копировать что приходит но ничего нельзя всунуть без метода сервиса которому как раз это и можно.
подключаться там где открылось впервые.
второй раз проверять - може уже подключено
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Авраам Петрович
верно! это отличный лодаш для событий, чтобы например рисовать на канвасах.
но то что ангуляр сказал что каждый запрос это по сути обсервабл - это не просто так. потому что подключения бывают к сокетам тоже. и вообще технология "открой соединение и жди" довольно давно существует. от нее не отказались, ее положили в ящик пока большинство не поймет. а тут вдруг она возвращается в новой обертке и как выясняется ею просто пытаются забивать гвозди!
нет. ангуляр использует rx как движок всей реактивности.
и использует потому что rx легко применим ко всему.
И к запросам тоже.
источник

PK

Polishko Kostiantyn in Angular - русскоговорящее сообщество
Спасибо, я понял
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
Anton Shvets
нет. ангуляр использует rx как движок всей реактивности.
и использует потому что rx легко применим ко всему.
И к запросам тоже.
как и обьект легко применим ко всему пока не придумали тайпскрипт потому что суперпаттерн как и суперобьект в итоге антипаттерн
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
не пей столько кофе :)
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
Anton Shvets
не пей столько кофе :)
откуда ты знаешь! только что налил
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Авраам Петрович
откуда ты знаешь! только что налил
интуиция - дочь опыта 🤣
источник

P

Proto in Angular - русскоговорящее сообщество
Anton Shvets
интуиция - дочь опыта 🤣
Не повторяй моей ошибки
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
ну, собственно, запрос помощи эксперта вылился в часовое обсуждение технологий образования, моих мозгов и загонов, в демонстрацию конкретного кода, а в итоге - в ничего. и шо делать, спамить теперь?

суперпаттерн плох именно этим. чтобы его показать нужна связь и экран, потому что описать зачем-  невозможно
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Proto
Не повторяй моей ошибки
да я в курсе, развлекаюсь просто
источник

M

Maksim in Angular - русскоговорящее сообщество
Авраам Петрович
и вроде показывает правильно, но работает не так как я хотел.
"показывает правильно, не так как я хотел" - так себе описание проблемы. Как нужно чтобы показывал?
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
Maksim
"показывает правильно, не так как я хотел" - так себе описание проблемы. Как нужно чтобы показывал?
как я читаю данный код:

при каждой команде в результат всем, кто сделает пайп или подпишется должен приходить итоговый стор.
я как бы хочу написать
data$
 .onCommand('add', addItemToData)
 .onCommand('remove', removeItemFromData)

data$.subscribe(); // начали
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
оно в принципе делает именно это сейчас но тут вопросы:
1. правильно ли создавать настолько глобальный источник данных
2. почему в итоге выводится сообщение сабскрайберу только 1 раз, ведь команд выполняется десяток
3. стор хранится сейчас в обычной переменной и каждый раз считывается заново. учитывая асинхронку и возможные приколы типа "3 раза нажали действие" - он может считать и вернуть лютую чушь. значит надо subject?
источник

Вキ

Вертихвост キバ 🏡🦊... in Angular - русскоговорящее сообщество
Proto
Никак. И никто не ответит. Конкретного вопроса нет. Читайте документацию. Ставьте эксперименты. Появятся конкретные вопросы, задавайте.
А сейчас это выглядит как научите меня писать программы
Напоминаю, что в нашем чате принято уважительно относиться к своим коллегам. Если кому-то не нравится вопрос, то он просто его игнорирует.
источник

M

Maksim in Angular - русскоговорящее сообщество
Авраам Петрович
оно в принципе делает именно это сейчас но тут вопросы:
1. правильно ли создавать настолько глобальный источник данных
2. почему в итоге выводится сообщение сабскрайберу только 1 раз, ведь команд выполняется десяток
3. стор хранится сейчас в обычной переменной и каждый раз считывается заново. учитывая асинхронку и возможные приколы типа "3 раза нажали действие" - он может считать и вернуть лютую чушь. значит надо subject?
после этой статьи вопросов должно стать поменьше https://medium.com/ngx/practical-use-rxjs-81aaab57045c
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
читал. не стало

если быть точнее то после нее оно и стало в таком виде как сейчас
источник

M

Maksim in Angular - русскоговорящее сообщество
значит стоит перечитать :)
как минимум третий вопрос - "стор хранится сейчас в обычной переменной".
и тут же в начале статьи
чтобы работать с состоянием как с потоком RxJS, обернем его в оператор of() для создания Observable.
в коде этого не сделано
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
Maksim
значит стоит перечитать :)
как минимум третий вопрос - "стор хранится сейчас в обычной переменной".
и тут же в начале статьи
чтобы работать с состоянием как с потоком RxJS, обернем его в оператор of() для создания Observable.
в коде этого не сделано
ну а у меня что происходит?
смотри, $data.pipe(map(() => { return of([...store])) }); ///
источник

M

Maksim in Angular - русскоговорящее сообщество
у тебя, каждый раз когда в onCommand подается новое значение, происходит новое создание стора через Object.values(store)
источник

M

Maksim in Angular - русскоговорящее сообщество
Авраам Петрович
ну а у меня что происходит?
смотри, $data.pipe(map(() => { return of([...store])) }); ///
такой строчки в том stackblitz нету
источник