1

Тема: Анонімний чат (тет-а-тет)

Доброго часу доби. Можливо хтось знаходив скрипт, або готовий поділитись своїми напрацюваннями анонімного чату. Він повинен бути простеньким, без реєстрації, просто заходить гість і до нього рандомно підключався інший гість з сайту для анонімної бесіди.
Ось знайшов щось схоже (http://almiur.ru/chat.php), реалізований, як я зрозумів, на AJAX, PHP. Можливо хтось підскаже алгоритм реалізації даного проекту. Не розумію, яким чином воно конектить двох рандомних корустувачів. Дякую за увагу

2

Re: Анонімний чат (тет-а-тет)

користувач заходить - ставимо йому унікальну куку,
куку- id юзера разом зі статусом - в базу,

користувача який був останній раз на сайті - 3 доби + назад - видаляємо з бд,
користувача який клікнув "знайти аноніма-співрозмовника" - ставимо в статус "чекаю співрозмовника",

крон раз в секунду - бере з бд таких користувачів у рандомному порядку і розбиває попарно -- їх додаємо у таблицю розмов, ставимо статус "розмовляє" або просто забираємо статус "очікування співрозмовника"

користувач зайшов з кукою, якої в таблиці немає - додаємо в таблицю, або ж генеруємо нову

:) здається, проблем немає

Подякували: Bygryn, Monolith, VTrim3

3

Re: Анонімний чат (тет-а-тет)

221VOLT написав:

користувач заходить - ставимо йому унікальну куку,
куку- id юзера разом зі статусом - в базу,

користувача який був останній раз на сайті - 3 доби + назад - видаляємо з бд,
користувача який клікнув "знайти аноніма-співрозмовника" - ставимо в статус "чекаю співрозмовника",

крон раз в секунду - бере з бд таких користувачів у рандомному порядку і розбиває попарно -- їх додаємо у таблицю розмов, ставимо статус "розмовляє" або просто забираємо статус "очікування співрозмовника"

користувач зайшов з кукою, якої в таблиці немає - додаємо в таблицю, або ж генеруємо нову

:) здається, проблем немає

Яким чином зробити це все в реальному часі? Завжди відправляти запити на сервер?

4

Re: Анонімний чат (тет-а-тет)

ностальгія

ТС нагадав мені, як десь у 2000-их всі ходили в компютерні клуби і був такий чат бізаре, там тоже можна було спілкуватись, це ж тоді було модно, капець, не то що новомодні соц мережі, тоді все було по хардкору, щоб побачити нові повідомлення, треба було оновляти сторінку  *YES*

по суті:
- випадок один: реєструєтсья нова сесія, вона  має унікальну айдішку і позначкою що вона відкрита. це в таблиці БД додається новий запис
- випадок два: в чаті вже є одни "чекаючий" і заходить новий. спочатку він дивиться, якщо є сесія його відкрита, то тоді приєднується до неї і позначає її як сесія закрита, інакше виконується перший випадок

Подякували: Bygryn, VTrim, 221VOLT3

5

Re: Анонімний чат (тет-а-тет)

Bygryn написав:
221VOLT написав:

користувач заходить - ставимо йому унікальну куку,
куку- id юзера разом зі статусом - в базу,

користувача який був останній раз на сайті - 3 доби + назад - видаляємо з бд,
користувача який клікнув "знайти аноніма-співрозмовника" - ставимо в статус "чекаю співрозмовника",

крон раз в секунду - бере з бд таких користувачів у рандомному порядку і розбиває попарно -- їх додаємо у таблицю розмов, ставимо статус "розмовляє" або просто забираємо статус "очікування співрозмовника"

користувач зайшов з кукою, якої в таблиці немає - додаємо в таблицю, або ж генеруємо нову

:) здається, проблем немає

Яким чином зробити це все в реальному часі? Завжди відправляти запити на сервер?

Треба писати демон. Я теж недавно схожою задачею загорівся, але потім притих в силу браку знань)
Тут можете почитати: http://mithrandir.ru/professional/php/php-daemons.html
Мені допомогло, щоб більшість запитань прибрати з голови)
Не сильний у PHP, але це мова яка "зробила щось і померла". Тобто демон на цій мові, в крайньому випадку - не  правильно.
Пишіть про результати. Цікаво  :)

Подякували: Bygryn, 221VOLT2

6

Re: Анонімний чат (тет-а-тет)

Той чат іще є, правда трохи допиляний але є.

Реалізація з куками ніби підходить - чи ні?

7

Re: Анонімний чат (тет-а-тет)

Djalin написав:

Той чат іще є, правда трохи допиляний але є.

Реалізація з куками ніби підходить - чи ні?

Цікаво поглянути на любу реалізацію такого чату

8 Востаннє редагувалося iovchynnikov (08.07.2016 13:21:10)

Re: Анонімний чат (тет-а-тет)

А не думали зробити на WebSockets + NodeJS? Буде справжній реал-тайм чат без усілякої магії з "демонами" php....
https://gist.github.com/martinsik/2031681

Подякували: Bygryn, Monolith2

9

Re: Анонімний чат (тет-а-тет)

iovchynnikov написав:

А не думали зробити на WebSockets + NodeJS? Буде справжній реал-тайм чат без усілякої магії з "демонами" php....
https://gist.github.com/martinsik/2031681

Чесно кажучи, це була перша думка, але не розумію, як на NodeJS зробити так, щоб 2-ох користувачів рандомно з'єднувало у приватний чат. Можливо маєте ідею?

10

Re: Анонімний чат (тет-а-тет)

Цікаве завдання для голого PHP/AJAX/БД.
Не все так просто, як може здатися на перший погляд.
Коли ми натискаємо шукати співрозмовника, то й рандомна вибірка повинна бути для тих, хто саме зараз теж шукає співрозмовника, а Не той, хто взагалі є в списку пошуку. Тобто ще перевірка по часу або ж постійне видалення старих записів.
Щоб оптимально вирішити (без костилів), треба трохи подумати.

Подякували: Bygryn, 221VOLT2

11

Re: Анонімний чат (тет-а-тет)

Та в чергу їх заганяйте і виймаєте по два, ні?

12

Re: Анонімний чат (тет-а-тет)

VTrim написав:

Цікаве завдання для голого PHP/AJAX/БД.
Не все так просто, як може здатися на перший погляд.
Коли ми натискаємо шукати співрозмовника, то й рандомна вибірка повинна бути для тих, хто саме зараз теж шукає співрозмовника, а Не той, хто взагалі є в списку пошуку. Тобто ще перевірка по часу або ж постійне видалення старих записів.
Щоб оптимально вирішити (без костилів), треба трохи подумати.

Що за список пошуку такий? Там вище ще про БД писали, видно в веб-програмуванні без плодіння зайвих сутностей не обійтись.

13

Re: Анонімний чат (тет-а-тет)

quez написав:
VTrim написав:

Цікаве завдання для голого PHP/AJAX/БД.
Не все так просто, як може здатися на перший погляд.
Коли ми натискаємо шукати співрозмовника, то й рандомна вибірка повинна бути для тих, хто саме зараз теж шукає співрозмовника, а Не той, хто взагалі є в списку пошуку. Тобто ще перевірка по часу або ж постійне видалення старих записів.
Щоб оптимально вирішити (без костилів), треба трохи подумати.

Що за список пошуку такий? Там вище ще про БД писали, видно в веб-програмуванні без плодіння зайвих сутностей не обійтись.

Я мав на увазі список користувачів в бд (які щойно теж натиснули Пошук) для рандомного пошуку співрозмовника.

Чи дані в бд не можна називати списком?

14

Re: Анонімний чат (тет-а-тет)

Спробую написати такий чатик..
Що з того вийшло чи не вийшло, напишу сюди.

Подякували: Bygryn, leofun01, Monolith3

15

Re: Анонімний чат (тет-а-тет)

VTrim написав:

Спробую написати такий чатик..
Що з того вийшло чи не вийшло, напишу сюди.

Чудово, чекатиму Ваших результатів, та й сам почну писати:)

16

Re: Анонімний чат (тет-а-тет)

VTrim написав:
quez написав:
VTrim написав:

Цікаве завдання для голого PHP/AJAX/БД.
Не все так просто, як може здатися на перший погляд.
Коли ми натискаємо шукати співрозмовника, то й рандомна вибірка повинна бути для тих, хто саме зараз теж шукає співрозмовника, а Не той, хто взагалі є в списку пошуку. Тобто ще перевірка по часу або ж постійне видалення старих записів.
Щоб оптимально вирішити (без костилів), треба трохи подумати.

Що за список пошуку такий? Там вище ще про БД писали, видно в веб-програмуванні без плодіння зайвих сутностей не обійтись.

Я мав на увазі список користувачів в бд (які щойно теж натиснули Пошук) для рандомного пошуку співрозмовника.

и дані в бд не можна називати списком?

Можна, але навіщо записувати цей список в бд, якщо можна просто тримати його в пам'яті? Зрозумів, це ж PHP, який народжений, щоб вмирати.

17 Востаннє редагувалося VTrim (08.07.2016 23:11:30)

Re: Анонімний чат (тет-а-тет)

Вище або спроба будь-яким способом товсто протролити PHP або людина не розуміє, що той список динамічний і формується через відправку даних кожним користувачем, так само кожен користувач має отримати доступ до неї.
Про яку память ви говорите?

18

Re: Анонімний чат (тет-а-тет)

VTrim написав:

Вище або спроба будь-яким способом товсто протролити PHP або людина не розуміє, що той список формується через відправку даних кожним користувачем, так само кожен користувач має отримати доступ до неї.
Про яку память ви говорите?

Оперативну, яку ж іще. Все те, що ви хотіли писати в бд, можна залишити в пам'яті, за умови, що аплікейшен на сервері продовжуватиме працювати. У випадку PHP такий спосіб може викликати деякі проблеми, про що ви безперечно знаєте.

19

Re: Анонімний чат (тет-а-тет)

запитали про алгоритми і реалізацію,
а нижче - знову срачег розводиться,
ай молодці :)

Подякували: VTrim, Bygryn2

20 Востаннє редагувалося VTrim (08.07.2016 23:28:24)

Re: Анонімний чат (тет-а-тет)

quez написав:
VTrim написав:

Вище або спроба будь-яким способом товсто протролити PHP або людина не розуміє, що той список формується через відправку даних кожним користувачем, так само кожен користувач має отримати доступ до неї.
Про яку память ви говорите?

Оперативну, яку ж іще. Все те, що ви хотіли писати в бд, можна залишити в пам'яті, за умови, що аплікейшен на сервері продовжуватиме працювати. У випадку PHP такий спосіб може викликати деякі проблеми, про що ви безперечно знаєте.

І ви дійсно вважаєте таке зберігання кращим аніж в бд?

Подякували: Bygryn1