Форум для общения
Нам 7 лет, с Днем рождения!

форум, общение

Протокол клиента "Форума дремучих"

Что такое клиент форума?

Клиент форума - это специальная программа, написанная на языке высокого уровня (С, Паскаль, Java и т.п.), которая используя определенный интернет-протокол (как правило http) разрешает использовать все возможности форума не прибегая к помощи браузера. Зачем это нужно?

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


Скачать одного из уже написаных клиентов форума можно отсюда.

  • В первой строке результата, который возвращают запросы, идут названия полей, в последующих - соотвествующие данные. И поля и данные разделяются знаком табуляции(ascii-код 9).
  • В колонке "Длина" указана максимальная длина, которую могут иметь данные для этой колонки. Memo - строковое поле неопределенной длины.
  • Во многих запросах используется тип данных Unix-время по Гринвичу. Для перевода этих значений в формат даты Windows используйте формулу: виндовс := 25569 + юникс / 86400. Также корректируйте это время на разницу в часовых поясах.
  • Если записей, удевлетворяющих скрипт, нет, тогда он возвращает пустой файл.
  • 1. Запрос списка клиентов и информации о них

    для получения списка клиентов:
    http://deep.webest.net/forum/client/?get=1

    для получения информаци лишь об конкретном клиенте:
    http://deep.webest.net/forum/client/?get=1&id=1

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

    Ответ скрипта:

    ПолеДлинаОписаниеПример
    id код клиента1
    name 30 имя клиентаDeep OWN
    version 15 номер версии (текст)2.0
    author_id код анкеты автора1
    author_name 25 имя автораDeep
    date дата последнего обновления2004-07-10
    size 10 размер файла для скачки~750kb
    package 20 описание пакета: архив/инсталяцияупакован RAR3
    link 75 ссылка на файл клиента или домашнюю страницу автораhttp://deep.webest.net/clients/deepown.rar
    about memo описание клиентаТребует BDE. Шустрый, удобный, интерфейс максимально схож с веб-аналогом. Умеет работать...
    screenshot 75 ссылка на скриншот клиентаhttp://deep.webest.net/clients/scr.gif
    history 75 ссылка на файл истории изменений клиентаhttp://deep.webest.net/clients/history.txt

    Поле id (код клиента) является уникальным идентификатором клиента и в будущем изменятся не будет.





    2. Запрос списка доступных конференций

    http://deep.webest.net/forum/client/?get=2

    Ответ скрипта:

    ПолеДлинаОписаниеПример
    row номер строчки форума3
    col номер колонки форума2
    title 20 название конференцииФилософия
    dsc 80 краткое описаниеНепростые вопросы о жизни...






    3. Запрос списка новых/отмодерированных тем и сообщений

    для выборки всех новых тем и сообщений:
    http://deep.webest.net/forum/client/?get=3&utime=1058801849

    для выборки новых тем и сообщений в разрезе форумов:
    http://deep.webest.net/forum/client/?get=3&utime=1058801849&f=0102;0401

    Ответ скрипта:

    ПолеДлинаОписаниеПример
    msg_root_id код сообщения27829
    msg_parent_id код родительского сообщения(темы)26219
    msg_row код строки форума4
    msg_col код колонки форума1
    user_id код анкеты автора4
    user_kind код значка копирайта автора (если автор не зарегистрирован, то значение будет пустым; 0-зарегистрированный автор, 1-админ, 2-модератор, 6-авторитет)2
    user_name 20 имя автораVictorT
    user_ip 15 ip-адрес автора сообщения212.109.38.110
    user_email 40 email автора
    topic_icon код иконки темы
    topic_text 100 текст темы сообщения
    msg_utime юникс-время отправки сообщения1058801849
    msg_status 1 статус сообщения ('D' - удалено, 'L' - тема закрыта, 'M' - тема перенесена)
    msg_change юникс-время модерации сообщения
    msg_comment memo комментарий модератора
    msg_text memo текст сообщения> то, что уже прошло через него т.е. вывод, то что прошло, стало реальным, а до этого было виртуальным.

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

    Где
    utime=0 в первом случае, в последующих он его получает из локальной базы, это юникс-время последнего скачаного сообщения. Количество сообщений для закачки ограничивается сервером: за одину сессию можно скачать не более 250 сообщений.

    Клиент парсит сообщения, если это новые темы - просто добавляет в базу, если ответы - заодно апдейтит в локальной базе дату последнего сообщения к теме. Соотвественно, и сортирует по дате последнего сообщения темы. Выбирает максимальный msg_utime из всех закачанных сообщений и запоминает его: будет использовать при последующем обращении к скрипту.

    для выборки только новых тем по конкретному разделу форума:
    http://deep.webest.net/forum/client/?get=3&utime=1058801849&f=0102;0401&count=5&topic=1

    Ответ скрипта:

    ПолеДлинаОписаниеПример
    msg_root_id код сообщения(темы)27829
    msg_row код строки форума4
    msg_col код колонки форума1
    msg_last_time юникс-время последнего обновления1058803249

    utime - юникс-время для нижней границы закачиваемых тем;
    f - список конкретных форумов; указывается в формате "код строки форума"код колонки форума";... Коды форумов дополняются ведущими нулями до 2-х знаков. В приведенном примере: 0102 - раздел "Делфи", 0401 - "Беседка";
    count - максимальное количество тем для закачки;
    topic - признак того, что будут закачиваться только темы, а не все сообщения;





    4. Запрос полной информации о ветви

    http://deep.webest.net/forum/client/?get=4&id=11894&from=0&to=1050308360

    Где параметры вызова скрипта значат следующее: id - номер запрашиваемой ветви, from - юникс-время первого сообщения по этой ветке, to - юникс-время последнего сообщения из ветки, которую вы хотите закачать. Если два последних параметра не указывать, ветка закачается полностью.

    Формат возвращаемой скриптом информации аналогичен вышеописаному предыдущего скрипта. Текст сообщения нужно только показать, никакая дополнительная информация от него вроде не требуется, поэтому формат HTML должен быть вполне подходящим. Если очень нужен распарсенный вариант пусть этим занимается клиентская часть. Сначала идет сам вопрос, далее ответы на него.





    5. Запрос списка новых/измененных анкет

    для получения списка анкет:
    http://deep.webest.net/forum/client/?get=5&utime=0

    или для получения данных по конкретной анкете:
    http://deep.webest.net/forum/client/?get=5&id=42

    Ответ скрипта:

    ПолеДлина ОписаниеПример
    id код анкеты42
    login 15 логинBooba
    name 40 имяИрина Боднарюк
    birthdate 10 дата рождения14/01/1979
    country 15 страна
    city 50 городЛьвов
    sex 1 полF
    state 1 семейное положениеa
    email 30 emailBooba@ukr.net
    homepage 30 домашняя страница
    icq 10 номер icq168363105
    about memo о себеСегодня страсть, а завтра - тихое блаженство, Сегодня - блеск в глазах, а завтра...
    admin админ (true/false)false
    moderator модератор(true/false)false
    info_reg дата регистрации1046690735
    info_change дата изменения анкеты0
    msg_date дата последнего сообщения1089116750
    msg_count количество сделаных сообщений5982
    last_ip 15 ip последнего сообщения195.149.109.103
    avatar 30 аватар(имя файла)booba.gif
    bonus_id код бонуса или титула6
    bonus_name название титулав разделе "Поэзия"

    Параметр utime - юникс-время, точка отсчета для закачки обновлений. Изначально берем это значение равным 0, а в дальнейшем присваиваем максимальное значение поля info_change. Первый скрипт возвращает информацию порциями не более 250 записей. Второй - только одну запись данных.
    Так-же можно добавить параметр zip - в этом случае сервер отправляет клиенту данные в сжатом виде, используется формат архива zip.

      ©  webest.net, 2002-2012