Протокол клиента "Форума дремучих"
Что такое клиент форума?
Клиент форума - это специальная программа, написанная на языке высокого уровня (С, Паскаль, Java и т.п.), которая используя определенный интернет-протокол (как правило http) разрешает использовать все возможности форума не прибегая к помощи браузера. Зачем это нужно?
Клиент как правило всегда обеспечивает больше удобств при просмотре форумов и навигации, чем браузер. При передачи даных с использванием клиента - избыточные данные (например код меню или дизайна страницы) не передаются, так как "интерпретацию" такого кода берет на себя сам клиент. Это обеспечит вам лучшую скорость загрузки информации с форума и меньший трафик передачи данных, в результате экономию вашего времени и денег. И самое главное - используя клиент форума вы можете хранить интересную для вас (или всю) информацию форума на своем компьютере. Это дает вам возможность просматривать тексты форума после закачки в режиме оффлайн, т.е. без подключения к Интернету. Сответственно будет возможен поиск нужной информации на локальном компьютере, причем он будет более быстрым.
Скачать одного из уже написаных клиентов форума можно отсюда.
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 |
| 30 | Booba@ukr.net | ||
| homepage | 30 | домашняя страница | |
| icq | 10 | номер icq | 168363105 |
| 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.