Задать вопрос
nepster-web
@nepster-web

Какими средствами реализовать обновление контента?

Пишу игровой портал, у меня есть станица где показаны все заявки для игры.
Когда пользователь создает новую заявку, заявка должна появится на странице.
Когда пользователь отменяет заявку или стартует игру, заявка должна пропасть со странице.

Необходимо сделать это в реальном времени. Ну для примера как новости вконтакте.

Я все думюа какой технологией это можно реализовать? Я использую SSE для обновления статистики в реальном времени и заметил, что по ходу там можно возвращать только text или json.
  • Вопрос задан
  • 2757 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 9
AMar4enko
@AMar4enko
Ага, а вы хотите возвращать "заявку"?
Ответ написан
Комментировать
Armanio
@Armanio
Для обновления новостей ВК использует лонг поллинг.
Как это сделать описывали ребята из cacke вот тут.
Ответ написан
Комментировать
fornit1917
@fornit1917
Используйте лонг поллинг javascript.ru/ajax/comet/long-poll
Ответ написан
Комментировать
nepster-web
@nepster-web Автор вопроса
Ну например у нас есть игра в дурака и на странице есть заявки на игру. К примеру их будет 10.

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

На похожем сайте, это реализовали как то так:
*4
$2034
id=383868;mt=0.5;tm=61480;pl=4;st=0;ai=385279;ar=0;an=ivanko22;pr=4131212;ft=1_1;end_time=0;,id=383867;mt=1;tm=61479;pl=4;st=0;ai=360834;ar=175;an=Nik Neym;pr=4212222;ft=1_1;end_time=0;,u2=19542|Sapojnik||26 896;u3=196415|FBI_||867;id=383884;mt=0.5;tm=61520;pl=4;st=0;ai=86572;ar=5 132;an=velikolepniy;pr=4211222;ft=1_1;end_time=0;,id=383883;mt=1;tm=61519;pl=4;st=;ai=242629;ar=26 360;an=AP7707;pr=4221122;ft=3_20000;end_time=0;,id=383853;mt=0.75;tm=61452;pl=2;st=2;ai=384860;ar=52;an=гаер;pr=4111111;ft=1_1;end_time=0;,u2=254870|volkodav777||38 634;id=383856;mt=0.5;tm=61458;pl=4;st=;ai=30948;ar=170 498;an=ГОЛУБКА;pr=4221122;ft=2_1;end_time=0;,u2=155646|h0m4ik||5 794;id=383854;mt=1;tm=61455;pl=3;st=0;ai=234925;ar=5 766;an=x3m_Girl;pr=4111111;ft=1_1;end_time=0;,id=383817;mt=1;tm=61354;pl=2;st=0;ai=278638;ar=5 807;an=БОРЛАК 007;pr=4111111;ft=3_5600;end_time=0;,u2=383652|Helen2131||232;id=383816;mt=0.75;tm=61352;pl=4;st=0;ai=383824;ar=352;an=Санёёёк;pr=4211222;ft=1_1;end_time=0;,id=383815;mt=1;tm=61352;pl=4;st=0;ai=385041;ar=84;an=avrora7777;pr=4221212;ft=1_1;end_time=0;,id=383691;mt=0.5;tm=61106;pl=2;st=;ai=122665;ar=13 440;an=бездельник;pr=4111111;ft=1_1;end_time=0;,id=383874;mt=1;tm=61498;pl=2;st=0;ai=363432;ar=556;an=Ґurґєn Eloyan9356;pr=4111111;ft=1_1;end_time=0;,u2=150815|Ольгиня||14 317;id=383877;mt=1;tm=61505;pl=4;st=0;ai=226512;ar=16 662;an=лучана;pr=4121122;ft=1_1;end_time=0;,id=383876;mt=1;tm=61502;pl=4;st=0;ai=383755;ar=382;an=ДЕ берцор;pr=4212121;ft=1_1;end_time=0;,id=383879;mt=0.5;tm=61507;pl=4;st=;ai=369098;ar=214;an=Іnna Parhomuk9315;pr=4211221;ft=1_1;end_time=0;,u2=146562|lelik333||4 919;id=383878;mt=0.5;tm=61507;pl=4;st=0;ai=25795;ar=4 665;an=AceBerg;pr=4211222;ft=1_1;end_time=0;,id=383610;mt=1;tm=60935;pl=4;st=0.2;ai=260251;ar=12 274;an=yurzik;pr=4221222;ft=1_1;end_time=0;,u2=307363|Испанский летчик||2 029;id=383701;mt=0.5;tm=61124;pl=4;st=;ai=245511;ar=2 307;an=vad777;pr=4231121;ft=1_1;end_time=0;,id=383705;mt=1;tm=61129;pl=4;st=;ai=91332;ar=0;an=андрей989898;pr=4111221;ft=1_1;end_time=0;
$45
'249963|fartovaya1000|0|0: )){T}6151198','57'
$-1
$-1


Это ответ дебагера и честно говоря вообще не понял, что это такое. Как и вк загадочные
Ответ написан
Комментировать
nepster-web
@nepster-web Автор вопроса
Смотрел в сторону long-poll, а что мне нужно возвращать вообще? просто html файл ?
Я вот думаю в сторону возврата просто пакетов.
Например у меня есть на странице 5 заявок (1,2,3,4,5) и я возвращаю:

id1 - user[player1, player2], time
id2 - user[player1, player2], time
id3 - user[player1, player2], time
id4 - play
id5 - delete

Все это в jsone к примеру возвращаю, а ява скрипт красивенько с эффектами разбирается с экраном.
Но это можно сделать и простым SSE, что думаете ?
Ответ написан
Комментировать
Как вариант, можно использовать SSE, в него передавать идентификатор заявки и действие. В зависимости от полученных данных изменять контент (удалять, перемещать, получать ajax-запросом с backend и т.д.)
Ответ написан
Если у Вас используются сессии (что скорее всего так) и действия пользователя на время запроса не блокируются, то использовать Long-poll нельзя - будут проблемы с зависанием запросов. В этом случае нужно всё делать средствами обычного ajax. Во всех остальных случаях можно использовать технологию Long-poll, о которой написали выше
Ответ написан
@Levhav
Возьмусь за разработку проектов любой сложности.
Я думаю лучше использовать websocket, если вы не собираетесь изучать/использовать node.js то я рекомендую не обрабатывать long-polling или websocket на php так как это создаст приличную нагрузку а обратить внимание на комет сервисы представляемые по Saas, на пример этот или этот
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы