Чат на 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('Действие не доступно'); такие сообщения не попадают в базу.
|
|
| |