Size: a a a

2020 October 14

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Bohdan Bessonov
Угум. Основная проблема - у меня создается страничка, которой надо ивенты слать, но ивенты приходят раньше чем страница готова их принимать.

Потому мне либо писать кэш (кэшировать все, что пришло до готовности страницы, а потом, когда прогрузилась - все из экша вызвать)
Либо остановить отправку этих ивентов, пока страница точно полностью не будет прогружена.
У странички есть ивент load и можно его слушать
источник

BB

Bohdan Bessonov in Svelte [svelt]
Pavel 🦇 Malyshev
У странички есть ивент load и можно его слушать
но как ничего не отправлять, пока не пришел лоад?
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Bohdan Bessonov
но как ничего не отправлять, пока не пришел лоад?
В коллбеке ивента вызвать что-то что начнёт отправлять
источник

М

Максим in Svelte [svelt]
wasm решение проблемы
источник

BB

Bohdan Bessonov in Svelte [svelt]
Pavel 🦇 Malyshev
В коллбеке ивента вызвать что-то что начнёт отправлять
ну то есть кэширование, о котором я написал как вариант.

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

Спасибо
источник

MZ

Misha Zamkevich in Svelte [svelt]
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Bohdan Bessonov
ну то есть кэширование, о котором я написал как вариант.

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

Спасибо
Честно говоря задача не ясна. Почему вообще скрипты запускаются пока страница не готова не понятно
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Что за ивент в твоём коде и кто его шлёт тоже
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Это текущее window или iframe?
источник

МТ

Марк Танащук... in Svelte [svelt]
Подход не js'овский немного
источник

BB

Bohdan Bessonov in Svelte [svelt]
Могу описать подробнее, но хз станет ли понятнее. Архитектуру не я изобретал.

Есть Сервер (C# код)
Есть Клиент (JS код)
Есть Веббраузер CEF (HTMl+JS, ну браузер короче)

Сервер работает постоянно.
Загружается клиент.
Клиент грузит страничку вызовом CEF.LoadMyCoolHTML("index.html");
эта страничка гарантированно будет готова, когда сработает ивент CEF.loaded.

Сервер в какой-то момент времени отправляет клиенту ивент "showPage1".
В клиенте есть обработчик. client.onServerEvent("showPage1" => { CEF.sendEvent("showPage1"); который отправляет что-то в браузер.

Проблема в том, что если клиент получит сообщение от сервера и вызовет обработчик раньше, чем страница прогружена, страница ничего не получит.
И мне надо попросту в клиенте дождаться полной загрузки страницы, после чего начать обрабатывать серверные ивенты.

Выглядит, что кеширование - прям опция. Закешировать все что пришло от сервера, если страница не загружена. Когда загрузится - выполнить кеш.
Если на момент ивента от сервера страница прогружена - сразу выполнять
источник

MZ

Misha Zamkevich in Svelte [svelt]
источник

MZ

Misha Zamkevich in Svelte [svelt]
Bohdan Bessonov
Могу описать подробнее, но хз станет ли понятнее. Архитектуру не я изобретал.

Есть Сервер (C# код)
Есть Клиент (JS код)
Есть Веббраузер CEF (HTMl+JS, ну браузер короче)

Сервер работает постоянно.
Загружается клиент.
Клиент грузит страничку вызовом CEF.LoadMyCoolHTML("index.html");
эта страничка гарантированно будет готова, когда сработает ивент CEF.loaded.

Сервер в какой-то момент времени отправляет клиенту ивент "showPage1".
В клиенте есть обработчик. client.onServerEvent("showPage1" => { CEF.sendEvent("showPage1"); который отправляет что-то в браузер.

Проблема в том, что если клиент получит сообщение от сервера и вызовет обработчик раньше, чем страница прогружена, страница ничего не получит.
И мне надо попросту в клиенте дождаться полной загрузки страницы, после чего начать обрабатывать серверные ивенты.

Выглядит, что кеширование - прям опция. Закешировать все что пришло от сервера, если страница не загружена. Когда загрузится - выполнить кеш.
Если на момент ивента от сервера страница прогружена - сразу выполнять
Ну общем то ты всё правильно пишешь про кеш. Собрать все ивенты в очередь и по событию загрузки страницы их исполнить.

Второй вариант как-то передать серверу момент загрузки страницы и таким образом тормозить все ивенты от него до этого момента.
источник

BB

Bohdan Bessonov in Svelte [svelt]
Misha Zamkevich
Ну общем то ты всё правильно пишешь про кеш. Собрать все ивенты в очередь и по событию загрузки страницы их исполнить.

Второй вариант как-то передать серверу момент загрузки страницы и таким образом тормозить все ивенты от него до этого момента.
Вот и про это я подумал. типа отправить серверу Iamready
источник

BB

Bohdan Bessonov in Svelte [svelt]
и после этого только отправлять гуевые ивентики
источник

MZ

Misha Zamkevich in Svelte [svelt]
Вот только тут не сишный форум, примерно совсем. И с headless (это же оно) примерно почти не все имеют опыт )))
источник

MZ

Misha Zamkevich in Svelte [svelt]
Ой, я уже говорю как йода, пора спать ))
источник

BB

Bohdan Bessonov in Svelte [svelt]
Misha Zamkevich
Вот только тут не сишный форум, примерно совсем. И с headless (это же оно) примерно почти не все имеют опыт )))
так а причем тут сишный не сишный, с этим проблем нет.
источник

MZ

Misha Zamkevich in Svelte [svelt]
Bohdan Bessonov
Вот и про это я подумал. типа отправить серверу Iamready
В нормальных браузерах есть ивент DOMContentLoaded вот если он там стреляет от него можно отталкиваться
источник

MZ

Misha Zamkevich in Svelte [svelt]
Но хз как ты там дальше это обрабатываешь.
источник