| Чат на PHP | 
|  | 
| 
| scn | Дата: Суббота, 20 Апреля 2013, 00:56 | Сообщение # 1 |  |   был не раз Сейчас нет на сайте | Хочу сделать чат на PHP с jQuery (ajax), есть одна деталь которую не знаю как реализовать.
 Чат нужен для браузерной игры, но в чате будут как и сообщения пользователей,
 так и системные сообщения.
 Есть игры где сообщения не обновляются, а только новые добавляются ( $().append() ) в чат
 и сервер выдает только новые. Как это реализовать? Помогите пожалуйста
 |  |  |  |  | 
| 
| Quieteroks | Дата: Вторник, 30 Апреля 2013, 00:17 | Сообщение # 2 |  |   частый гость Сейчас нет на сайте | А что именно не понятно? 
 Вы не можете найти новые сообщения в чат для конкретного пользователя?
 Тут все просто, выборку делать по дате. Таймштамп шлите дополнительным параметром в ajax ответе и посылайте его при новом запросе, переписывая его в переменной после получения положительного ответа.
 
 Не знаете как системные сообщения реализовать?
 Так же как и пользовательские, только при формировании шаблона в данном случае обрабатывайте иначе. К примеру системные сообщения всегда от ID равному 1.
 Обычное условное выражение.
 
 Если же Вам нужен код на js, то тут сложнее, нужно писать учитывая Вашу систему и шаблон.
 
 Если вам все равно где вы находитесь, значит вы еще не заблудились.
 |  |  |  |  | 
| 
| scn | Дата: Среда, 29 Мая 2013, 14:12 | Сообщение # 3 |  |   был не раз Сейчас нет на сайте | Quieteroks, уже понял как сделать. Как с временем, только передавать ID последнего сообщения. И в скрипте который выдает сообщения выполнять SQL запрос который удаляет сообщения, жизнь которых больше 10 секунд, рефреш 5 секунд. Пока-что лучший вариант, что смог придумать.
 Просто видел код, где ничего на сервер не передается, а поступают только новые сообщения.
 Но там как я понял куки постоянно перезаписываются.
 
 
 Сообщение отредактировал scn - Среда, 29 Мая 2013, 14:19 |  |  |  |  | 
| 
| lvovand | Дата: Среда, 29 Мая 2013, 14:24 | Сообщение # 4 |  | старожил Сейчас нет на сайте | удалять сообщения необязательно так сразу, кто-то раньше зашел, кто-то позже и может путаница пойти, можно чистить раз в час или раз в сутки, а передавая id самое то,
 - по началу передаешь id=0,
 - затем в php смотришь, если id =0, то просто отдаешь 10 последних сообщений и возвращаешь id послденего,
 - в js присваиваешь переменной id то значение, что вернулось аяксом,
 - в следующий раз в php передалось id>0 и смотришь сообщения, у которых id больше переданного id, и также возвращаешь id последнего сообщения
 
 Разработка и продвижение сайтов. Дизайн
 |  |  |  |  | 
| 
| scn | Дата: Воскресенье, 02 Июня 2013, 20:37 | Сообщение # 5 |  |   был не раз Сейчас нет на сайте | lvovand, в том и фишка, что надо удалять их сразу |  |  |  |  | 
| 
| lvovand | Дата: Воскресенье, 02 Июня 2013, 20:47 | Сообщение # 6 |  | старожил Сейчас нет на сайте | не совсем понял в чем фишка, пользователь будет и так получать новые сообщения, а для удаления старых запусти отдельный демон или задачу по крону и пусть хоть каждую минуту сообщения удаляет
 
 Разработка и продвижение сайтов. Дизайн
 |  |  |  |  | 
| 
| scn | Дата: Вторник, 04 Июня 2013, 13:48 | Сообщение # 7 |  |   был не раз Сейчас нет на сайте | lvovand, лог будет в чате. И не все сообщения лога будут попадать в базу данных. То есть после обновления страницы, сообщения лога которые не попали в базу больше не будут отображаться, а сообщения которые еще не успели удалиться будут опять отображаться и получится путанина.
 Чтобы не отправлять лишние запросы на сервер, у меня в некоторых участках идет проверка на JavaScript, и если не проходит проверку
 просто выполняется $('#msg').append('Действие не доступно'); такие сообщения не попадают в базу.
 |  |  |  |  |