Добрый день друзья!
Хочу разобраться в началах Qt. Был старый проект на чистом c++ под линух, но стало необходимо перевести его на Qt. (было все сделано по старинке, запуск тредов с while (true) внутри)
Проект достаточно простой: это клиент для Web чата, в котором можно общаться только 1 на 1, но одновременно со многими (как ICQ).
Принцип работы этого чата:
Заходим на главную страницу, находим форму логина и делаем пост.
1 .Следом идем на страницу чата.
http://example.com/chat.phpна этой странице аяксом делаются запросы раз в 10 секунд и в ответ получает кто стукнулся в чат.
ответ вида: jQuery({"im":{"users":[],"total_count":0,"flag_blink":0,"flag_beep":0}})
либо: jQuery({"im":{"users":{"6202162":{"count":1,"username":"Mananayaia","pair_hash":"DwYDB1ZXBx8HAVYFCVcF","uid_hash":"DwYDBVBTBA=="}},"total_count":1,"flag_blink":1,"flag_beep":1}}) если кто то стукнулся.
Дале выстаскиваем uid_hash из предыдущего запроса и создаем новый вида:
2.
http://example.com/chat_main.php?uid_hash=DwYDBVBTBA==Из полученого хтм вытаскиваем еще 1 парамерт auth_token
и начинаем раз в 10 секунд выполнять запросы вида:
3.
http://example.com/chat_msg.php?auth_data=blablablabal&uid_hash=DwYDBVBTBA==В ответ получаем Либо jQuery({"messages":[]})
либо jQuery({"messages":[{"message":"Hi","date_created":1346024185,"from":"6197964","to":"6202471"},{"message":"How are you? ?","date_created":1346024189,"from":"6197964","to":"6202471"}]})
Это значит нам написали два сообщения Hi и How are you?
4 чтобы отправить сообщение пользователю достаточно вызвать
http://example.com/send_msg.php?auth_data=blablablabal&uid_hash=DwYDBVBTBA==&message=HELLOOOO!!!!
Начал делать следущее.
ChatModule
public:
int openChat()
{
открываем чат запускаем таймер с интервалом 10 секунд и конектим к слоту checkNewRewquest
}
slot:
void checkNewRewquest()
{
берем страницу
http://example.com/chat.php если находим новый запрос делаем
emit newRequest(QString fromUser, QString token);
}
А теперь мне нужно в этом сигнале как-то сообщить Accept или Decline разговор.
В случае Decline просто игнорируем все, а вот в случает Accept мне нужно
выполнить пункты 2 и 3 (выше они) причем 3ий пункт нужно выполнять каждые N секунд и в случае появления нового сообщение сгененрировать например сигнал newMessage (QString from, QString message);
И когда нужно, ответить ему своим сообщением (4 пункт)
Дошел до этого места и у меня ничего не получается. Объясните правильно ли я вообще делаю, либо на Qt это нужно делать подругому.
Я в принципе не понимаю как это реализовывать Может быть примеры дадите или сами накидаете каркас этой задачи. Уже 4 дня не могу сообразить. (когда писал на обычных сях проблем вообще не было)
А тут не понятно, треды говорят использовать глупо.