Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSInteractiveRequest, Интерактивная загрузка/посылка данных 
:(
    Опции темы
Sardar
Дата 28.5.2005, 04:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 16
Всего: 317



Ещё не готово, подождите smile Выложил что бы потестить и найти баги.

Реализованна серверная сторона: PHP, ещё бы Java
Клиентская сторона на JavaScript.

Скрипт позволяет интерактивно обмениваться данными между клиентом и сервером. Принцип загрузки не нов, основан на подкачке скриптов. Интересные моменты этой реализации:
  • безглючная работа с текстом, кодируется в UTF-8, что предотвращает всякого рода кракозябры
  • использование кук для отправки данных, это позволяет увеличить их обьём до 4кб. На русских текстах реально 800 байт... smile
  • безглючные хешьтаблицы(траблу увидел в JSHttpRequest)
Одновременно с тестами пишу BWT-DC сжатие, что позволит отправлять русские тексты размером до 3кб. Это актуально для чатов.

Код хорошо документирован. Если не понимаем, то лучше не трогайте и ждите нормального мана smile

Всем кто захочет потестировать/поковыряться в коде большой пасиб, ссылки:
http://sardar.vingrad.ru/JSInteractiveRequest/index.htm
http://sardar.vingrad.ru/JSInteractiveRequ...ctiveRequest.js
http://sardar.vingrad.ru/JSInteractiveRequ...uest.php?source

На тестовой странице видим:
  • select - в котором выберем метод отправки. Cookie загадят на время ваши куки, ну важно что бы там места под введёный текст было. Кука умрёт при получении ответа. GET - в адресной строке, естественно она будет загажена smile
  • текстовое поле - вписываем текст отправляемый на сервер
  • кнопка Test - жмём для отправки запроса. Отсылаеться текущее время(timestamp) и текст из текстового поля
В ответ получим:
  • распечатанные данные, отправленные клиентом
  • распечатанный обьект JSInteractiveRequest, видно его состояние
  • распечатанные GET и COOKIE по которым видно как пришли данные
Советую глянуть в PHP код. Первый большой коментарий немного устарел, времени сейчас нет обновитьsmile Когда дойдёте на немного мудрённого парсинга - если что не понятно, пропускай, парсинг не важен smile

Это сообщение отредактировал(а) Aliance - 28.5.2005, 13:46


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 28.5.2005, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 6
Всего: 137



Sardar
Зашел по ссылкам:
  • первая: поставь между строчками \n<br> - а то вправо на большое расстояние выходит =/
  • третья: комментарии не на русском :-D

А идея как у (JS|XML)HttpRequest`а? Работа с сервером без перезагрузки страницы?

PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 28.5.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 16
Всего: 317



Цитата(Aliance @ 28.5.2005, 12:50)
А идея как у (JS|XML)HttpRequest`а? Работа с сервером без перезагрузки страницы?

Угу, тот же подход как у JSHttpRequest, но написал на мой взгляд лучше. Инфа перед отправкой сериализуеться в особый(трудно читаемый smile ) формат, который позволяет сэкономить пару байт на сериализии URL. Инфа может быть целым деревом.Также текста передаються в UTF-8, что исключает кракозябры. Осталось внести сжатие и будет полный продукт, для постройки интерактивных чатов. Получать от сервера можно целые страницы + отдельную инфу в виде дерева.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 28.5.2005, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 6
Всего: 137



Где посоветуешь такое пременять, кроме чатов, предпросмотра чего-либо и, возможно, проверок форм (наличие ника в БД)? Просто я пока сильной нужды в этом узреть немогу smile
PM MAIL WWW ICQ Skype   Вверх
diam
Дата 28.5.2005, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: 1
Всего: 16



Sardar, извини, я ещё не посмотрел код (точнее, начал смотреть, но он большой smile ), вопросы.
1. Зачем используются cookie?
2. Про какое шифрование ты говорил?
3. Ты отправляешь данные в UTF-8. Они перекодируются на сервере?
4. Почему не UTF-16? Они же больше символов в себя вмещают.

З.Ы. На текущий момент с подгрузкой без перезагрузки решил все проблемы, кроме передачи файла на сервер smile. Проблемы с данными, размер которых может превысить 400 байт, решаю путём разбиения на несколько частей (ес-но, по договорённости с сервером smile ).

З.Ы.2. По всякому утыкивал XMLHttpRequest. Так и не получается отправить методом POST. Посему никак не пойму - да нафига такая му-му?
PM MAIL   Вверх
Sardar
Дата 28.5.2005, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 16
Всего: 317



Цитата(diam @ 28.5.2005, 19:27)
1. Зачем используются cookie?

Это один из вариантов отправки данных. В куках можно отправить 4кб против 1кб GET'ом

Цитата(diam @ 28.5.2005, 19:27)
2. Про какое шифрование ты говорил?

Так как текст в юникоде, то на русских текстах получим большую избыточность. Порешать это можно сжатием. Словарные и символьные(хафмана, PPM) не подходят(сложны для JS и малоэффективны в этом случае). BWT преобразование, а затем кодирование DC даст офигенный результат smile Но это как необязательная опция, дающая преимущество в чатах(длинные отсылаемые сообщения)

Цитата(diam @ 28.5.2005, 19:27)
3. Ты отправляешь данные в UTF-8. Они перекодируются на сервере?

Да, так я не завишу от кодировки на клиенте. НО, ввиду ограниченности PHP(он работает с однобайтовыми строками) приходиться перекодировать всё в локальную(серверную) коридовку и обратно.

Цитата(diam @ 28.5.2005, 19:27)
4. Почему не UTF-16? Они же больше символов в себя вмещают.

Ты не совсем прав, UTF это способ сериализации(записи) юникодовского текста (UCS-2(4)). В UTF-8 минимальный символ состоит из одного байта(совпадают с ASCII), в UTF-16 минимальный символ из двух байт. UTF-8 популярен, так как на английских текстах не имеет избыточности. Оба способа сериализуют по момему UCS-4, 4 байтовый юникод. В любом случае все популярные языки в нём есть smile

Файл отправить не иначе как формой нельзя(исключаем разного рода фичи ИЕ, что закрываються после каждого нового сервиспака). Любой браузер очень щепитильно относиться к отправке файла, иначе можно всю конфиденциальную инфу юзера незаметно выкачать smile
На текущий момент отослать файл можно только формой, имя файла может задать только юзер и никак иначе.
Добавлено @ 20:46
Цитата(Aliance @ 28.5.2005, 14:36)
Где посоветуешь такое пременять, кроме чатов, предпросмотра чего-либо и, возможно, проверок форм (наличие ника в БД)? Просто я пока сильной нужды в этом узреть немогу

Разного рода live фичи, типа живого поиска по форуму. Писал для себя, для своего проекта, так что для себя применение я нашёл smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
diam
Дата 28.5.2005, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: 1
Всего: 16



Цитата(Sardar @ 28.5.2005, 20:44)
BWT преобразование, а затем кодирование DC даст офигенный результат smile

Это есть в JS, или ты сам это напишешь?
PM MAIL   Вверх
Sardar
Дата 28.5.2005, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 16
Всего: 317



Цитата(diam @ 28.5.2005, 20:26)
Это есть в JS, или ты сам это напишешь?

Сам, алгоритм пока не сложный...


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Elfet
Дата 6.9.2005, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Sardar
Что-то я не понимаю как это работает smile Хочу всё себе сделать чат без фреймов smile


--------------------
PM MAIL WWW Skype   Вверх
Aliance
Дата 6.9.2005, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 6
Всего: 137



Вот, пожалуйста, чат, написанный на XMLHttpRequest:
http://www.plasticshore.com/projects/chat/index.html
PM MAIL WWW ICQ Skype   Вверх
Elfet
Дата 6.9.2005, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Из той статьи вроде понял как это работает, но соовсем не понял как это использовать smile может ты напишешь какую-нибудь доку об использовании? smile
Добавлено @ 20:27
Aliance
Как этот чат работает тоже понять немогу smile Видимо плохо знаю ЯваСкрипты что бы с первого раза код понять


--------------------
PM MAIL WWW Skype   Вверх
Aliance
Дата 6.9.2005, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 6
Всего: 137



Elfet
Введи в поиск HttpRequest и прочти все темы, многому научишься!
PM MAIL WWW ICQ Skype   Вверх
fregs
Дата 10.11.2005, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 25.11.2004

Репутация: нет
Всего: 1



крыша под конец рабочего дня уже плавится...
взялся разбираться и сел на задницу...
сам вызов то как сделать?
мне нужно получить содержимое страницы t1.php?t=23
рисую в жскрипте примера

Код

function GetThread(id) {
  if(a==null) {
    a=new JSInteractiveRequest("mods/fstrange/int_req.php");
    a.onload=function(data, text) {
      alert(this.method);
      document.getElementById("t_fl_1").appendChild(document.createTextNode(text));
    };
  }
  a.method='GET';
  a.request('t1.php?t='+id);
}


Код

<img src="../i/prvw.gif" onclick="GetThread(23)" />
<div id=t_fl_1>
999999999999999999999999999999999999999
</div>


вызываю, смотрю через liveHTTPheaders
вижу

GET /vb/int_req.php?3561&conspec=sid465154553sc402&condat=t51.php%3Ft%3D5253 HTTP/1.1

ответ 200... хорошо
хорошо... но ответа не вижу

PM MAIL WWW   Вверх
Sardar
Дата 11.11.2005, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 16
Всего: 317



Цитата(fregs @ 10.11.2005, 16:48)
мне нужно получить содержимое страницы t1.php?t=23

Ты обращаешся к странице mods/fstrange/int_req.php, которой передаёшь параметром 't1.php?t='+id, на сервере соотвественно нужно понять JSInteractiveRequest класс, опросить параметры и echо результат.

Вообще найдены ошибки работы скрипта с Оперой 8 и Нетскейпом 8, фиксить нет времени пока. Советую воспользоваться JSHttpRequest от Дмитрия Котерова на dklab.ru


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Здесь публикуют скрипты, которые уже проверены в обсуждениях других тем (при этом полезно поставить ссылки на все смежные обсуждения) или переносятся кем-либо из модераторов по просьбе участников, если видно, что в результате обсуждения темы был написан полезный или интересный скрипт. Третий возможный вариант - участник форума публикует скрипт, заведомо известный как полезный и эффективный, для, возможно, небольшой доработки и обсуждения.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Наши скрипты | Следующая тема »


 




[ Время генерации скрипта: 0.1931 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.