169 похожих чатов

1. У меня много таблиц. Как мне сделать 1 коннект

на все приложение*?

19 ответов

11 просмотров

В сокет ио есть концепция комнат, это базовый паттерн. Реализация - шлешь в коннекшн уточняющую информацию о том, что тебе (не) нужно отслеживать

Nava-Sagi Автор вопроса
Dmitry Remezov
В сокет ио есть концепция комнат, это базовый патт...

Про сокет ИО - это как пример, или при чем здесь сокет ио?)

Nava-Sagi Автор вопроса
Dmitry Remezov
В сокет ио есть концепция комнат, это базовый патт...

Я так понял, здесь подразумевается, что и бэк переделывать надо будет?)

Nava Sagi
Я так понял, здесь подразумевается, что и бэк пере...

У сокет ио есть клиент и сервер часть Если ее юзать будешь то скорее всего

Nava Sagi
Я так понял, здесь подразумевается, что и бэк пере...

Если у тебя бек написан, как по сокету на id - да, это мусор

Nava-Sagi Автор вопроса
:) ник
У сокет ио есть клиент и сервер часть Если ее юза...

У меня серверная часть в Django, и я коннекчусь непосредственно туда, бэк не мой

Псевдокод на get/set. Делаешь какую-то абстракцию над сокетом. Делаешь абстракцию над событиями. Динамично подписываешься на конкретный тип событий с конкретным id. Я хз, как это понятно описать без нормального стм, но попробую const ws = createWs(new WebSocket('...')); // ... ws.on('kek:updated').watch(updates => { if (updates.uuid !== getSelectedKek()) return; updateSelectedKek(updates); }) function selectKek(uuid) { setSelectedKek(uuid); ws.send('kek:watch', { ids: [uuid] }); } function updateSelectedKek(updates) { const uuid = getSelectedKek(); setKekes(getKekes().map(kek => (kek.uuid === uuid ? { ...kek, ...updates } : kek))); }

Dmitry Remezov
Псевдокод на get/set. Делаешь какую-то абстракцию ...

- создаешь общий инстанс сокета - при изменении выбранного ID шлешь событие "отслеживать Kek только с этим ID" и сохраняешь ID в стор - подписываешься либо на событие "Kek с этим ID изменился", либо на событие "Kek изменился" и фильтруешь по ID - в обработчике события обновляешь Kek в списке по ID - при уходе со страницы шлешь событие "отписаться от Kek"

Dmitry Remezov
Псевдокод на get/set. Делаешь какую-то абстракцию ...

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

Rain
Недавно немного работал с вэб сокетами в целом ра...

Что оборачивать? Там же просто вешаются слушатели на на соединение и срабатывают они только когда приходить что то с сервера

Оборачивать сразу две операции, запрос и ответ. КОгда запрос посылаем, то передаем ид по которому можем связать ответ с запросом резолвы промисов записываем куда нибудь типа promiseId: resolve когда ответ ответ приходит, то из карты по ид берем резолв и вызываем его передавая в него ответ а в коде это будет выглядеть потом типа const res = await "сделай запрос на сокет и верни результат".

Dmitry Remezov
В сокет ио есть концепция комнат, это базовый патт...

Концепция комнат в том, что на бэке есть метод отписки от комнаты и подписки на комнату. На фронте можно не заморачиваться и просто получать ивенты (подконнектившись к совету один раз + юзать один ивент с фронта для смены прослушиваемой комнаты). Список коннектов к комнатам лучше в кэше на сервере. И все это для того, чтоб не хватать все ивенты на фронте подряд по одному каналу (и выбирать из них нужный). Для справки. Заморочиться с стм - это прям если охота конкретно пое*аться на фронте ))

Rain
Оборачивать сразу две операции, запрос и ответ. К...

А, ну тебе уже всё ответили. await untilSubscribed можно await waitForEvent (читай - once) можно Для чего-то унарного можно, но сами сокеты - стрим, нет там промисов

Dmitry Remezov
А, ну тебе уже всё ответили. await untilSubscribed...

Ага, спасибо, я уже примерно понял о чем суть.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта