powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Автоматический обработчик html форм на JS
25 сообщений из 353, страница 7 из 15
Автоматический обработчик html форм на JS
    #39341220
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадявот для браузеров это была проблема
XMLHttpRequest появился гораздо раньше WebSocket

нравится WebSocket - и хорошо, мне он тоже нравится( кроме маразма с обязательностью маски для передачи от клиента)
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341221
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяэто код, в котором показано как это работает
а как это соотносится с темой топика?
Помню в теме ангуляр мы тоже твой сокет рассматривали.
Может модератора прикрепить топик вверху с 3-мя идеями?
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341226
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WebSocket так WebSocket - всё хорошо.

Диспетчеризация сообщений на клиенте хромает.

в глобальное пространство имён помещаются функции-обработчики всех типов сообщений,
отсутствие обработчика - вызывает ошибку (ну не интересно клиенту слушать некоторые уведомления от сервера)

подписки на сообщения - нет ( у сообщения, посылаемого сервером, может быть более одного подписчика)
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341230
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяИзопропил,
начинается всё с "протокола"
идея взята с хабра, моя доработка.
первая часть - команда. она отделена от остальной части разделителем , я использую |
команда представляет собой имя функции , которая и будет обработывать данные.
из-за определённых условностей имена формализированы до полной абстакции
: xxxnn, yyynn и им подобные (где nn цифры) , буквы обозначают причастность к странице - прошу не пинать, это обеспечивает некоторые преимущества, которые перекрывают многие недостатки.
после разделителя -идут данные - тут мой "json" для экономии трафика стандарный не используется,
передаваемые данные разделены своим разделителем, он должен быть любым символом, который не встречается в данных
к примеру я использую ® - его код Alt0174, иногда используется прстая запятая
для разделения по разделителю - комада split.
из моей практики - длина данных составляет до 10 полей, это самый редкий размер.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
var con;
var rg = /^([a-z_0-9.]{1,})\|([\s\S]*)/; // для выделения команды
 var rg_url = /https?\:\/\/([\S\w][^:|/]{1,})/; // для выделения из адреса - самого имени , либо ip, 
исключает необходимость отслеживать имя/адрес сервера/сайта
                var ws = rg_url.exec(document.URL);
                con = new WebSocket('ws://' + ws[1] + ':<%=Singleton.getPORT_WS()%>'); // порт прописывется в Singleton , мой вариант , кому как нравится

                con.binaryType = "arraybuffer";  // почитать в спеках
                con.onopen = function (e) {
                    con.send('auth|<%=request.getSession().getAttribute("token")%>~<%= session.getId()%>');
//мой вариант авторизации ws
//для начала надо войти по логину/паролю на странице входа
//первой передаётся команда auth c  данными логин разделитель (~) сесия - на сервере проверяется есть ли токое, если нет ws закрывается //сервером. если есть это записывается в параметры ws коннекта, для дальнейшей возможности отправлять сообщения от пользователя //пользователю   это мой работающий вариант, опробован. 
//
                };
                con.onmessage = function (response) {
                    if (typeof (response.data) === 'string') {   //проверка на тип данных 
                        var r = rg.exec(response.data);  //делим на команду и данные
                        try {
                            if (r[1].includes('.')) {  // небольшая фишка для обращения к "свойствам объекта"
                                var d = r[1].split('.');  //проверка на наличие точки
                                window[d[0]][d[1]](r[2]);   //"аналог рефлексии"  d[0] -имя объекта, d[1] - имя свойства, r[2] данные
                            } else {
                                window[r[1]](r[2]);  // стандартный вызов
                            }
                        } catch (er) {
                            console.log('ошибка ' + er.stack);  //обработка ошибки, правда такой не очень информативет перехватывает и другие ошибки...
                            console.log('вызов ' + r[1]);   //пока оставлено как есть....
                            console.trace();

                        }
                    } else {  //тут для передачи бинарных данных, всё аналогично, пока заглушка, небыло необходимости, картинки передвались в base64
                        //                var uInt8Array = new Uint8Array(response.data);
                        //                var arrayBuffer = response.data;
                        //                var bytes = new Uint8Array(arrayBuffer);
                        //                console.log(bytes);
                        //               
                    }
                };
         //тут пока заглушка, что-либо городить не было причин, поэтому оставлено на будущее....
                  con.onclose = function (event) {
                    if (event.wasClean) {
                        console.log('Соединение закрыто чисто');
                    } else {
                        console.log('закрытие');
                    }
                    console.log('Код: ' + event.code + ' причина: ' + event.reason);
                };
                con.onerror = function (error) {
                    console.log("Ошибка ws " + error.message);
                };



некоторые незначительные тонкости описании пропущены
вот этот весь код предлагается вместо JSON.parse(str).
Так?
Вместо 1 строки при AJAX?
Как преобразовать такую строку в массив ?
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341232
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилвадяне возможность инициировать передачу сервером
Long Polling - материалов в сети достаточно
для браузеров это костыль, но люди делали и у них работало.

автора если он в данных? (в названии товара легко может затесаться, например)
передача данных
выглятид так
$(document).on('click', '№xxbbb', function (e) {
con.send('xxx33|'+n+'®'+j);
});
разделитель можно поставить любой, в любом месте свой, гарантированно не задейсвованный.

автор\x1f ничуть не сложнее, чем Alt0174,
а для отладки - всяко нужно выводить форматированный текст.
очень хорошо, проверю, просто не было проблемой, поэтому и не заморачивался.

1. ajax :) - не правильно выразился про асинхронность, виноват, имелось в виду что не надо отслеживать очередность отправления/прихода данных.
2. когда такое надо? Почему не ответить одним разом? не часто, но выручает очень выгодно, к примеру когда хранимка возвращает множественный резульсет, а на клиенте разные обработчики, это проще, чем данные разделять и отправлять в разные места.
3. согласен, килобайт трафика на пустом запросе сэкономите.
4. не подходит под условие. Это и есть незамедлительная актуализация данных на клиенте (я и написал такое условие, потому как посчитал единственным условием, когда ws оправдан) категоричность заявления спорная. но в 99% верная.
тут я бы сказал польза не в опреративности, а в том что для получения обновлённых данных надо писать код, таймер, кнопку, или ещё какой-то механизм.
с ws просто функция - помещения новых данных в нужное место. если ты першёл в поле и хочешь с ним работать надо полслать запрос, дождаться ответа.
а так у тебя в поле заведомо достоверная инфа. а если получение ответа несколько длительно...показывать часики
5. а с http дела обстоят иначе? Оо тут имеется в виду , что один и тот же обработчик будет работать как с десктопом, андроид приложение, браузером. лишь бы была поддержка ws.
6. у ajax тоже есть статусы соединения, потому не преимущество есть , но не такая по функционалу
7. аналог https, потому не преимущество спорить не буду
8. сейчас это и аяксом делать можно согласен
да есть ещё плюс по ws можно связываться не только с родным сервером, но и с любым количеством других.
полуплюс - с одной страницы можно иметь несколько подключений к серверу
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341236
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадячто один и тот же обработчик будет работать как с десктопом, андроид приложение
на андроиде юзают retrofit . 130 штук зарплата
http://www.sql.ru/forum/1222047/android-razrabotchik-moskva-100-130-t-r-na-ruki?mid=19395575&hl=retrofit#19395575
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341239
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкроме маразма с обязательностью маски для передачи от клиента
расшифруй

авторвот этот весь код предлагается вместо JSON.parse(str).
Так?
нет, не правильно понят код
по мимо JSON.parse этот код вызывает обработчика данных каждго для набора данных свой.
ты можешь выделить с помщью JSON.parse команду
и используя window[ля](данные) вызвать обработчик

авторВместо 1 строки при AJAX?
проще не получится, если делать такой же фунционал

авторКак преобразовать такую строку в массив ?
любым доступным методом , какой придумаешь. для начала я б сформировал другую строку, более удобную
если на сервере нет данных, я могу и не посылать, а могу послать другому обработчику сообщение, дело фантазии


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


авторподписки на сообщения - нет ( у сообщения, посылаемого сервером, может быть более одного подписчика)
ещё проще - на сервере решается без проблем, и клиенту не придут не нужные ему сообщения
эта проблема взята из распространённых примеров в сети

по 4 пункту - при отсутствии действий пользователя - обращений к серверу , на сервере при окончании времени сесии идет команда на клиента и его страница переходит на страницу авторизации.
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341242
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадячто один и тот же обработчик будет работать как с десктопом, андроид приложение
на андроиде юзают retrofit . 130 штук зарплата
http://www.sql.ru/forum/1222047/android-razrabotchik-moskva-100-130-t-r-na-ruki?mid=19395575&hl=retrofit#19395575
я пробу сил на ws сделал на трекере
написал програмку считывания gps, и отправки на сервер, с него на страницу браузера на карту гугла.
получилось довольно интересно, и трафика сжирало очень мало. но gps + передача на соньке кушало много..
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341245
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВместо 1 строки при AJAX?

проще не получится, если делать такой же фунционал
я проверял, ради интереса.
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341247
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяавторкроме маразма с обязательностью маски для передачи от клиента
расшифруй
RFC6455 section-5.3
4 байта на сообщение псу под хвост
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341248
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадянет, не правильно понят код
по мимо JSON.parse этот код вызывает обработчика данных каждго для набора данных свой.
ты можешь выделить с помщью JSON.parse команду
и используя window[ля](данные) вызвать обработчик
ещё подробнее.
Типа ты с сервера послал не только данные, но и
Код: sql
1.
{Имя: Вася; Принял:500|НажатьКнопку15}


Так?
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341249
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяавторв глобальное пространство имён помещаются функции-обработчики всех типов сообщений,
отсутствие обработчика - вызывает ошибку (ну не интересно клиенту слушать некоторые уведомления от сервера)
это решается простой логикой сервера. нет такой проблемы.
речь о несчастном клиенте, причём здесь сервер?
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341250
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяя пробу сил на ws сделал на трекере
написал програмку считывания gps, и отправки на сервер, с него на страницу браузера на карту гугла.
получилось довольно интересно, и трафика сжирало очень мало. но gps + передача на соньке кушало много..
я тебе по заплату 130 штук и Retrofit, а ты мне про то как ты отдыхал этим летом.
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341251
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя 1. ajax :) - не правильно выразился про асинхронность, виноват, имелось в виду что не надо отслеживать очередность отправления/прихода данных.
2. когда такое надо? Почему не ответить одним разом? не часто, но выручает очень выгодно, к примеру когда хранимка возвращает множественный резульсет, а на клиенте разные обработчики, это проще, чем данные разделять и отправлять в разные места.
3. согласен, килобайт трафика на пустом запросе сэкономите.
4. не подходит под условие. Это и есть незамедлительная актуализация данных на клиенте (я и написал такое условие, потому как посчитал единственным условием, когда ws оправдан) категоричность заявления спорная. но в 99% верная.
тут я бы сказал польза не в опреративности, а в том что для получения обновлённых данных надо писать код, таймер, кнопку, или ещё какой-то механизм.
с ws просто функция - помещения новых данных в нужное место. если ты першёл в поле и хочешь с ним работать надо полслать запрос, дождаться ответа.
а так у тебя в поле заведомо достоверная инфа. а если получение ответа несколько длительно...показывать часики
5. а с http дела обстоят иначе? Оо тут имеется в виду , что один и тот же обработчик будет работать как с десктопом, андроид приложение, браузером. лишь бы была поддержка ws.
6. у ajax тоже есть статусы соединения, потому не преимущество есть , но не такая по функционалу
7. аналог https, потому не преимущество спорить не буду
8. сейчас это и аяксом делать можно согласен
да есть ещё плюс по ws можно связываться не только с родным сервером, но и с любым количеством других.
полуплюс - с одной страницы можно иметь несколько подключений к серверу

1. Новую формулировку про "не надо отслеживать очередность отправления/прихода данных" не понял. Прокомментируй пожалуйста более подробно что это за проверка и когда в ней появляется необходимость (которой в ws соответственно нет)
2. К сожалению и эту формулировку я тоже не понял. Зачем отправлять в разные места, если можно всё это отправить одним ответом на клиента в виде того же json например?
3. ОК
4. 99%. Почти полное ОК (как у врачей... 99.9% с учётом непредсказуемой случайности) :))
5. Один и тот же? То есть ты хочешь js обработчик (написанный для браузера) вклинить в C++ код в десктопной реализации? Это как?! Поясни более подробно фразу "один и тот же обработчик"
6. ws статусы шире? А что в нём доступно такого, что не доступно в ajax статусах?
7. ОК
8. ОК
9. "ws можно связываться не только с родным сервером, но и с любым количеством других" - а с ajax дела обстоят иначе Оо
10. "с одной страницы можно иметь несколько подключений к серверу" - а с ajax разве нельзя? Оо
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341252
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторPetro123,

Типа ты с сервера послал не только данные, но и

{Имя: Вася; Принял:500|НажатьКнопку15}
нет
нажимать не надо
фффф|данные
ФФФФ -это имя функции(в общем случае)
Имя: Вася; Принял:500 - если это данные , то их
а ФФФФ вставит , или сделает с данными всё , что в ней прписано
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341255
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяИмя: Вася; Принял:500 - если это данные
в json - никак не передать параметры регулярным образом и произвольной сложности?
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341256
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
{function(Заменить Васю на Петю)|Имя: Вася; Принял:500|}


Это отправляется на сервер? Офигеть! ))
1. А в JSON я не могу функцию отправить? Если захочу?
2. Зачем это нужно? Может ещё вёрстку добавим? И CSS?
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341257
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

авторречь о несчастном клиенте, причём здесь сервер?
потому что за распространение сообщений с сервера отвечает сервер, и подписка организуется на сервере


авторя тебе по заплату 130 штук и Retrofit, а ты мне про то как ты отдыхал этим летом.
после твоей критики я боюсь куда нибудь пробоваться

автор4 байта на сообщение псу под хвост
чем больше сообщение тем кпд использования выше
и по сравнению с ajax -это мизер
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341259
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяпосле твоей критики я боюсь куда нибудь пробоваться
не поведёмся)). Это у тебя тонкий ход прожжённого полемиста)).
"Сами мы не местные.....помогите кто чем сможет"
"Москва слезам не верит"
))
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341262
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123
Код: sql
1.
{function(Заменить Васю на Петю)|Имя: Вася; Принял:500|}



Это отправляется на сервер? Офигеть! ))
1. А в JSON я не могу функцию отправить? Если захочу?
2. Зачем это нужно? Может ещё вёрстку добавим? И CSS?
боюсь предположить, что сервере творится ))
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341265
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Новую формулировку про "не надо отслеживать очередность отправления/прихода данных" не понял. Прокомментируй пожалуйста более подробно что это за проверка и когда в ней появляется необходимость (которой в ws соответственно нет)

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

2. К сожалению и эту формулировку я тоже не понял. Зачем отправлять в разные места, если можно всё это отправить одним ответом на клиента в виде того же json например?
отправить можно, но придётся делать дополнительную обработку по разделению данных
у меня также было что эти обработчики работали и по отдельности.

3. ОК
4. 99%. Почти полное ОК (как у врачей... 99.9% с учётом непредсказуемой случайности) :)) -
я дал и более расширенное толкование.


5. Один и тот же? То есть ты хочешь js обработчик (написанный для браузера) вклинить в C++ код в десктопной реализации? Это как?! Поясни более подробно фразу "один и тот же обработчик"

обработчик на сервере. т.е. серверу всё равно кто является клиентом

6. ws статусы шире? А что в нём доступно такого, что не доступно в ajax статусах?

https://learn.javascript.ru/websockets#коды-закрытия
но есть ещё и пользовательские
7. ОК
8. ОК
9. "ws можно связываться не только с родным сервером, но и с любым количеством других" - а с ajax дела обстоят иначе Оо
отстал от жизни.... :)

10. "с одной страницы можно иметь несколько подключений к серверу" - а с ajax разве нельзя? Оо
можно :)
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341266
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадянасколько я помню , в ajax на каждый запрос должен придти ответ , и если отправлено два запроса первый долгий, второй быстрый, то ответ второго посчитается как ответ на первый.
это может случиться только в жутко кривой реализации сервера
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341267
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123
Код: sql
1.
{function(Заменить Васю на Петю)|Имя: Вася; Принял:500|}


Это отправляется на сервер? Офигеть! ))
1. А в JSON я не могу функцию отправить? Если захочу?
2. Зачем это нужно? Может ещё вёрстку добавим? И CSS?
ты не понял.
на сервер будет отправлено
имя метода=команда
idВаси,IdПети
этобудет примерно так
xxx44|454,6556
на сервере вызовется метод xxx44с параметром-строкой param 454,6556
в методе вызов хранимки с парм
con_.prepareCall("{call хранимк1("+param+")}");)
и всё
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341268
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилвадянасколько я помню , в ajax на каждый запрос должен придти ответ , и если отправлено два запроса первый долгий, второй быстрый, то ответ второго посчитается как ответ на первый.
это может случиться только в жутко кривой реализации сервера
кривая или нет - это надо отслеживать
...
Рейтинг: 0 / 0
Автоматический обработчик html форм на JS
    #39341269
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

т.е . не отправлять данные первого долгого запроса.
...
Рейтинг: 0 / 0
25 сообщений из 353, страница 7 из 15
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Автоматический обработчик html форм на JS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]