Просмотр полной версии : [Вконтакте] чат с персонажами
AlexDesinger
14.01.2010, 23:48
Всем привет, я изучаю flash as3 где-то пол года, опыта мало, но результаты какие-никакие есть. У меня есть задача создать приложение вконтакте чат с персонажами.
Ребят подскажите, пожалуйста алгоритм и общий подход.
Для начала я создал:
Класс документа, подгружающий в себя все классы, образующие интерфейс. Создал класс UserData, который в будущем будет обращаться к данным пользователя, загрузившего приложение и пр. классы, создающие локацию и персонажа в ней. Но дальше не могу продвинуться, не могу понять алгоритм самого чата -
каким образом принимать сообщения от пользователей? Каждый раз обращаться скажем к текстовому файлу, в который будут писаться сообщения? Или как? Каким образом обнаружить что еще какой-то пользователь поставил себе приложение и еще и вошел в чат? Т.е. я просто должен каждый раз посылать запросы и т.е. каждый пользователь будет запрашивать определенный файл? И как следить за этим файлом? Он же раздуется до безобразия? Как мне определять что нужно удалять старые сообщения и пр. вобщем буду благодарен за любую такого рода информацию по общим принципам.
И да - если я задаю такие вопросы- стоит ли браться за это или у меня слишком мало знаний чтобы тратить свое время на этот чат?
Есть пример чата http://chat.vkontakte.ru/, если не видели.
AlexDesinger
15.01.2010, 00:06
udaaff, да спасибо, видел, сейчас его параллельно изучаю, пока что вижу что пользователи отображаются посредством какого то запроса через определенное время, но что и как пока что непонятно.
udaaff, да спасибо, видел, сейчас его параллельно изучаю, пока что вижу что пользователи отображаются посредством какого то запроса через определенное время, но что и как пока что непонятно.
Код этого чата не смотрел, но видно, что весь чат строится на двух post запросах getMessages и sendMessage. Комната = session. Список пользователей (скорее всего) в той или иной комнате строится на основании анализа очереди сообщений.
Полноценный чат там невозможно реализовать.
AlexDesinger
15.01.2010, 14:28
Полноценный чат там невозможно реализовать.
аааа вот оно в чем дело. Т.е. выдумывать и симулировать так и так?
Я вот тут подумал, а что если делать так:
Создаем файлик userOnline.txt, например отправляем в него id пользователя как только его приложение-чат готово(все загрузилось и построилось)и естесственно одновременно загружаем от туда всех зеров, что подключились до него. Загружать этот файлик, скажем каждые 5 сек, для проверки или каждый раз когда адресуется личное сообщение? Вот такой алгоритм как думаете не сильно загрузит сервак и пр.? Нужно же еще примерно таким же способом считывать сообщения, а так же после обнаружения юзера - подгружать инфу о нем(местоположение вид перса), некоторую постоянно, некоторую при запросе.
да и еще чего то не пойму - мне файлы данных дадут загрузить на их сервер рядом с флэхой или все это удаленно надо делать а в контакте грузить тока флэху?
аааа вот оно в чем дело. Т.е. выдумывать и симулировать так и так?
Полноценный чат, я имею в виду, полностью клиентский (без использования своих ресурсов).
Ну а по поводу, вообще, реализации чата, думаю, что лучше через сокет сервер все это дело организовывать.
да и еще чего то не пойму - мне файлы данных дадут загрузить на их сервер рядом с флэхой или все это удаленно надо делать а в контакте грузить тока флэху?
Загрузить то можно, но только рид онли с ними работать можно будет.
AlexDesinger
15.01.2010, 19:16
Ну а по поводу, вообще, реализации чата, думаю, что лучше через сокет сервер все это дело организовывать.
покапавшись немного в своих пыльных учебниках по macromedia flash mx нашел интересную книжку - "Популярные web приложения на flash mx" где очень все хорошо и подробно объясняется по поводу on-line игр и characters chat на flash.
Теперь постепенно приходит понимание о принципе организации онлайн проектов - классная книжка, кому интересно могу прислать на почту, формат *.pdf
Ну тк вот, в этой книжке рекомендуется установить т.н. ElectroServer на локальную машину(видимо для отладки) и на сервер, а для подключения к серверу использовать два файлика *.as. Но самое потрясающее и интересное, это то что этот сервер заточен специально для таких проектов и имеет в себе уже достаточно много стандартных функций.
Все это очень интересно и круто, но теперь я почти уверен что практически нереализуемо под приложение вконтакте, т.к. подозреваю что никакой сервер мне туда установить никто не даст.
Обидно....
Все это очень интересно и круто, но теперь я почти уверен что практически нереализуемо под приложение вконтакте, т.к. подозреваю что никакой сервер мне туда установить никто не даст.
Ну туда кончено никто не даст :). Кроме того ElectroServer еще и стоит немало. Смотрите в сторону Red 5 + VPS. На Red 5 есть даже пример реализации простенького чата.
AlexDesinger
15.01.2010, 20:26
дк а это...у меня задача только для вконтакте...но получается что только симуляция.
Но вот смотрю я код в бесплатном чате и никак не могу понять как он выстраивает список пользователей, точнее как его обновляет.
Пользователь открывает приложение. Приложение отправляет post запрос на Вконтакт с параметрами { method: getMessages, session: [viewer_id] }.
Т.е. приложение получает историю сообщений из определенной комнаты, с номером равным id текущего пользователя. На основании ответа определяет список юзеров присутствующих в чате. Я предполагаю, если время сообщения пользователя меньше текущего времени на определенное количество, то пользователь считается покинувшим чат. Иначе присутствует.
Если пользователь входит в какую-то комнату (session), то приложение шлет запрос { method: sendMessage, session: [id комнаты], message: %%join }.
Далее клиенты опрашивают Вконтакт через getMessages и если встречают %%join, то добавляют юзера в список пользователей в комнате.
Скорее всего так, я думаю :)
AlexDesinger
15.01.2010, 21:35
там есть
private const UPDATE_INTERVAL = 5000;
думаю просто приложение каждый раз опрашивает какой то файл в котором хранятся сообщения. Правда никак не могу понять откуда что он смотрит.
вот прочитал что вконтакте API есть возможность хранить переменные на сервере, там есть описания мтодов работы с ними и пр. но я вообще никак понять не могу где они хранятся как часто их рационально можно загружать.
и там ограничение по размеру. Значит для хранения сообщений они не подходят так?
Уже два раза было сказано про эти методы... :)
http://vkontakte.ru/pages.php?o=-1&p=sendMessage
http://vkontakte.ru/pages.php?o=-1&p=getMessages
AlexDesinger
15.01.2010, 23:50
хм...ну, вобщем, судя по методам из API получается, что нормального способа определить появление юзера или его выход, я уж не говорю о таких вещах как, например отслеживать его перемещение в локации, нет, есть только методы для работы с сообщениями.
Ну что ж, спасибо, большое, теперь все более-менее ясно и понятно, что тот чат, что уже создали, видимо, максимум, чего можно добиться от сервака вконтакте. И пытаться сделать полноценный avatar chat нет никакого смысла.
интересно, если вместо их стандартных sendMessage и getMessages использовать БД на своём удалённом сервере, он выдержит нагрузку чатом?
Зависит от нагрузки, возможностей сервера, и организации логики.
вот меня сейчас другое заинтересовало - если в sendMessage в текст сообщения задать кирилицу, то вместо букв передаются крокозяблики
<param>
<key>message</key>
<value>ïðèâåò</value>
</param>
соответственно, сигнатура считается неправильно. странно, не вижу в их примере никаких изменений в кодировке, но всё работает:o
Добавлено через 12 часов 25 минут
неужели никто не знает?:(
Добавлено через 12 часов 54 минуты
добавлено ещё позднее:
нашёл, escapeMultiByte() (для АС3)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.