Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/40: Рейтинг темы: голосов - 40, средняя оценка - 4.98
-13 / 2 / 0
Регистрация: 14.08.2014
Сообщений: 240

Современный чат на php с мгновенным получением сообщений

12.10.2015, 19:05. Показов 7787. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил я создать чат.
Пользователь жмёт кнопку "Создать", получает уникально сгенерированную ссылку
Даёт её кому угодно, все кто переходит по этой ссылке попадают в чат.
Настройки чата (всякие пароли на вход в конкретный чат и прочее) доступны только создателю "комнаты"
Все сообщения шифруются таким образом что не зная ключа - сообщения невозможно расшифровать.
Читая трафик - нельзя понять какого вида активность ведёт пользователь/о чём общается

Зная пароль - чат может удалить любой.
Удаляя чат удаляются все сообщения/прикрепления чата и никаких логов IP не ведётся.

Это мне кажется довольно удобным средством общения если необходима в некоторой степени защита информации.
PHP уже во многом готов. Но возникли огромные проблемы в части визуализации.
Кроме своей относительной функциональности чат должен быть удобным для пользователя.

На данный момент всё ультра примитивно.
После отправления сообщения страница попросту обновляется...

Разумеется я решил что пора уже прикрутить интерактивность.
Что бы диалог походил на привычный уже наверное всем ВК.
То есть отправил сообщение один пользователь, получили все читатели конкретного чата. Моментально.
Решил спросить у интернетов, что там и как... Я просто ох**л от того что творится в гуглах.

Я тут новичёк, но я жуткий хардкорщик (наверняка это связано). Сторонние библиотеки я не переношу априори!
Ну не то что бы я консерватор, но в проектах "для себя", я хочу понимать суть каждого символа в коде.
Таким образом я лучше запоминаю информацию и достаточно быстро отлаживаю возникшие проблемы.

Если речь идёт о каком нибудь jQuery скажем или о Bootstrap, то я в принципе и не против, несмотря на то что последнее призираю всячески.

Но когда я спрашиваю поисковик о том как бы мне оживить чат, а получаю ответы вроде "Ну переходишь на node.js" / "Демона пишешь для начала" / "Подключаешь вот эту нонэйм библиотеку" / "Подключаешь вот ту небольшую библиотеку с тысячей миллионов строк" я достаю свой огнетушитель и тушу своё кресло.

Так вот, кибер форум большой. Я думаю здесь найдётся какой нибудь не глупый человек который не любит сторонние библиотеки так же как Я, и посоветует мне что то годное.

Какое то решение, прибегнув к которому я смогу мгновенно читать сообщения отправленные другими пользователями. Но без того что бы каждые n секунд обновлять что то.

Сейчас мне очень нравится идея с сокетами. Вроде бы это неплохо.
Но то что я вЫчитал просто удар кувалдой по голове! Насколько я понял, для сокетов необходимы "демоны"...

Что мне можешь посоветовать ТЫ?

Важно: Постарайтесь аргументировать свой ответ.
AJAX с обновлением в n секунд? - Хорошо, почему?
Сокеты? - Прекрасно! Почему именно они?
Да даже та же node.js, обоснуйте своё мнение. Почему именно это должно мне помочь?

Сразу скажу, контрольные тесты провожу на обычном хостинге от джино. Никаких VPS, типикал хост.

Если вы считаете что я не прав насчёт сторонних библиотек и вообще я пищерный человек, вы конечно можете конструктивно покритиковать меня, но пишите это оффтопом. Подобные диалоги прошу вести в ЛС.

Заранее благодарен тем, кто придёт мне на помощь.

Добавлено через 8 минут
P.s. Очень важно - Чат хранит всю историю сообщений в БД! Варианты с "Отправил, получил, перезагрузил - пусто" отпадают сразу же.
Это я к тому что во всех примерах всё именно так. Просто знайте, сообщения хранятся в БД! А значит скорее всего и вытаскиваем их оттуда же.
Но варианты с "Отправил сообщение, добавилось в БД, отобразилось у всех не из базы" допустимы.
Просто учитывайте в своих ответах что данные должны храниться НЕ локально.

Добавлено через 1 час 39 минут
Бамп
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.10.2015, 19:05
Ответы с готовыми решениями:

Проверка и добавление новых сообщений в чат браузера автономно, средствами AJAX и PHP
Есть DIV куда выводятся все сообщения. <div id="chat_result" class="div_2_chat"> <? //Выводим данные чата из базы mysql ...

чат загрузка сообщений из бд
сделал чат(php mysql ajax) по книжке , сообщения каждые 3 секунды подгружаются из бд: <script> //При загрузке страницы...

Добавление сообщений в чат
Есть чат. Новые соощения в него добавляются так: кто-то на сервере добавил сообщение, с помощью GCM на андроид приходит уведомление о новом...

12
36 / 36 / 18
Регистрация: 01.01.2015
Сообщений: 287
12.10.2015, 19:31
Цитата Сообщение от AlexBitard Посмотреть сообщение
Если вы считаете что я не прав насчёт сторонних библиотек и вообще я пищерный человек, вы конечно можете конструктивно покритиковать меня, но пишите это оффтопом. Подобные диалоги прошу вести в ЛС.
а вы за какой промежуток времени хотите написать сие чудо?
и какая дальнейшая судьба будет у продукта?
какая лицензия на продукт?
0
-13 / 2 / 0
Регистрация: 14.08.2014
Сообщений: 240
12.10.2015, 22:37  [ТС]
Цитата Сообщение от evgenkur Посмотреть сообщение
а вы за какой промежуток времени хотите написать сие чудо?
и какая дальнейшая судьба будет у продукта?
какая лицензия на продукт?
Я уже пишу этот проект. Сайт будет в открытом доступе.
Абсолютно бесплатный для всех сервис. Распространять код я НЕ буду.
Но вполне возможно пару решений по шифрованию сообщений выложу в сеть если не найду ничего подобного.

Добавлено через 1 час 39 минут
Вопрос активен. Бамп.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,912
12.10.2015, 22:46

Не по теме:

Многобукаф, вопрос можно было в пару строчек уместить.



Цитата Сообщение от AlexBitard Посмотреть сообщение
AJAX с обновлением в n секунд? - Хорошо, почему?
Потому что самый простой вариант.
Цитата Сообщение от AlexBitard Посмотреть сообщение
Сокеты? - Прекрасно! Почему именно они?
Потому что на старом добром PHP.
Цитата Сообщение от AlexBitard Посмотреть сообщение
Да даже та же node.js
Потому что нода для подобных задач и создавалась, на ней написан чат ВК.

Выбирайте, что вам больше нравится.
0
-13 / 2 / 0
Регистрация: 14.08.2014
Сообщений: 240
12.10.2015, 23:35  [ТС]
Сейчас я однозначно смотрю в сторону сокетов.
Мне нужны ответы на 3 вопроса:
1: На сокетах возможно сделать всё так же быстро, качественно и надёжно как на ноде?
2: Будет ли всё так же шустро и функционально?
3: Что типично для чатов?
0
36 / 36 / 18
Регистрация: 01.01.2015
Сообщений: 287
13.10.2015, 12:25
Цитата Сообщение от AlexBitard Посмотреть сообщение
1: На сокетах возможно сделать всё так же быстро, качественно и надёжно как на ноде?
сокеты и нода несравнимые вещи.

Цитата Сообщение от AlexBitard Посмотреть сообщение
Распространять код я НЕ буду.
стесняетесь опозориться?
0
-13 / 2 / 0
Регистрация: 14.08.2014
Сообщений: 240
13.10.2015, 13:45  [ТС]
Цитата Сообщение от evgenkur Посмотреть сообщение
Сообщение от AlexBitard
1: На сокетах возможно сделать всё так же быстро, качественно и надёжно как на ноде?
сокеты и нода несравнимые вещи.
Отличный ответ. Очень информативно. Соси моё говно.


Цитата Сообщение от evgenkur Посмотреть сообщение
Распространять код я НЕ буду.
Конечно

Добавлено через 5 минут
Вопрос актуален. Кстати, я ведь правильно понимаю, нода ставится на VPS?

Добавлено через 4 минуты
evgenkur, И да, без обид. Просто надоели дауны которые любят что то одно (даже не важно php это/C#/питон или нода) и упорно стоят на том что их вариант лучший не понимая того что бывают разные ситуации и порой нужны разные решения.
И возможно нода это слишком. Для того лишь что бы у меня в чате мгновенно сообщения обновлялись.
Тем более когда почти весь код написан на PHP
0
36 / 36 / 18
Регистрация: 01.01.2015
Сообщений: 287
13.10.2015, 14:04
Цитата Сообщение от AlexBitard Посмотреть сообщение
Соси моё говно.
бомбануло зачетно

Цитата Сообщение от AlexBitard Посмотреть сообщение
Для того лишь что бы у меня в чате мгновенно сообщения обновлялись.
Тем более когда почти весь код написан на PHP
1. Код написан и не выложен на гитхаб => его не оценить.
2. Когда лист чистый, без разницы что изучать, решения на основе ноды либо
другие готовые решения, реализующие вебсокеты.
3. Когда решаешь задачу (!=программируешь на пхп) нужно мыслить шире и быть готовым к тому
что код может быть переписан, например с кривой реализации демона на пхп на серверный js.

Можно писать с нуля, 2 года(+ время на изучения веб программирования в целом).
Можно использовать готовые вещи и управится быстрее, после тщетных попыток написать с нуля
+ готовые велосипеды содержат меньше ошибок чем собственные.
пример https://github.com/websockets/ws
(сам лично не юзал, это что нашел гугл за минуту гугленья)
нужно чтото одно выбрать и попробовать

Добавлено через 4 минуты
Цитата Сообщение от Битард
опрос актуален. Кстати, я ведь правильно понимаю, нода ставится на VPS?
да, причем техподдержка впса не поможет скорее всего
0
-13 / 2 / 0
Регистрация: 14.08.2014
Сообщений: 240
13.10.2015, 14:19  [ТС]
Ну evgenkur, читай внимательно:
Цитата Сообщение от AlexBitard Посмотреть сообщение
Сразу скажу, контрольные тесты провожу на обычном хостинге от джино. Никаких VPS, типикал хост.
Понимаешь? Задача реализовать это на хосте.
И меня даже улыбнула твоя логика "Если этого нет на гитхабе - код дерьмо макаки"
Получается ВК/твитер/ргхос - полная ни начто непригодная залупа? Хороший довод, для макаки.

Ну и всё же. Что бы ты посоветовал для реализации на хосте?
Быть может какая то подписка на события?
0
36 / 36 / 18
Регистрация: 01.01.2015
Сообщений: 287
13.10.2015, 14:26
Цитата Сообщение от AlexBitard Посмотреть сообщение
И меня даже улыбнула твоя логика "Если этого нет на гитхабе - код дерьмо макаки"
не совсем так.
код дерьмо, а если его еще и нет на гитхабе то вдвойне.
(если его пишет нуб, умножаем еще на два).

Цитата Сообщение от AlexBitard Посмотреть сообщение
ргхос - полная ни начто непригодная залупа
в этом ты прав,
я не знаю че это а значит залупа.


Цитата Сообщение от AlexBitard Посмотреть сообщение
Понимаешь? Задача реализовать это на хосте.
на виртуальном хосте такую задачу невозможно сделать.(это не очевидно?! лол)
(даже если есть техническая возможность - правила запретят, а админы хостинга забанят если сделать).

Цитата Сообщение от AlexBitard Посмотреть сообщение
Ну и всё же. Что бы ты посоветовал для реализации на хосте?
я уже писал выше. впс, нода. либо на ваш выбор, но лучше прислушатся к советам опытных.
(благо не я один в теме - есть выбор!)
0
-13 / 2 / 0
Регистрация: 14.08.2014
Сообщений: 240
13.10.2015, 15:16  [ТС]
Цитата Сообщение от evgenkur Посмотреть сообщение
не совсем так.
код дерьмо, а если его еще и нет на гитхабе то вдвойне.
(если его пишет нуб, умножаем еще на два).


в этом ты прав,
я не знаю че это а значит залупа.



на виртуальном хосте такую задачу невозможно сделать.(это не очевидно?! лол)
(даже если есть техническая возможность - правила запретят, а админы хостинга забанят если сделать).


я уже писал выше. впс, нода. либо на ваш выбор, но лучше прислушатся к советам опытных.
(благо не я один в теме - есть выбор!)
Ладно, я понял. Ты полный отстой.

Итак, кто мне подскажет что за магия происходит здесь: http://jsfiddle.net/bv5Kq/13/ ?
0
36 / 36 / 18
Регистрация: 01.01.2015
Сообщений: 287
13.10.2015, 15:24
Если ты тру пацан, то не открывай скрытый текст,
т.к. отстой не может давать ответ, и подожди пока ктонить не ответит.
Кликните здесь для просмотра всего текста

Позор! Решение было таким простым!
В примере используется сторонний сервис
0
-13 / 2 / 0
Регистрация: 14.08.2014
Сообщений: 240
13.10.2015, 15:40  [ТС]
В любом случае я ставил на хост чат выполненный в дизайне консоли и он был на JS с записью в файл.
Так вот, в этом чате было то что мне необходимо. И он спокойно себе стоял на обычном хосте.

Жаль что хостинг был бесплатный и тот тестовый хост удалили за якобы фишинг...
Если найду тот чат - оставлю ссылку здесь.

Добавлено через 10 минут
Лол, действительно. Даже в этом варианте используется подписка. jsfiddle.net/bv5Kq/13
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.10.2015, 15:40
Помогаю со студенческими работами здесь

Чат в виде списка сообщений
Здравствуйте. Суть программы: есть сервер "server 7575" к нему подключаются клиенты "client 127.0.0.1 7575 1 (2, 3, 4, ...)", в...

Чат/игра с записью сообщений/данных в БД
Приветствую. Подскажите пожалуйста по такому вопросу, как реализовать чат (или например игру), которые будут отправлять данные на...

Корпоративный чат, вывод последних сообщений
Здравствуйте пишу чат и возникла проблема, написал запрос сообщения выводятся и группируются но к сожалению сортировка идет по первым...

WCF-чат логика получения сообщений
Всего пару недель как познакомился с WCF. На работе попросили создать чат (аналог ICQ), для клиента использую Windows Forms на сервере...

QUdpSocket чат. Отсылка/прием сообщений
Доброго времени суток, уважаемые форумчане! Пишу простенький чат. Описание идеи (пригодится для понимания структуры программы):Идея...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru