Простой чат на PHP. Часть 3

preview_player
Показать описание

Данным уроком мы завершаем небольшую серию видео по созданию собственного чата на языке PHP. Текущая реализация серверной части уже обладает механизмом по формированию сообщений, которые могут отправляться и приниматься клиентской стороной. Но в то же время, со стороны пользователя пока нет возможности создать сообщение, которое можно было бы отправить на сервер. Поэтому сегодня мы с Вами реализуем функционал по созданию и отправке сообщений непосредственно на сервер и последующую и рассылку всем посетителям чата.
Рекомендации по теме
Комментарии
Автор

Спасибо большое за уроки, очень доходчиво все объясняете. Не могли бы Вы снять дополнение к этим роликам? Дело в том, что очень часто бывает когда нужно отправить сообщение конкретному пользователю а не всем сразу. В интернете очень мало информации по этому поводу. И еще, технология вэбсокет предназначена для решения проблемы отправки сообщения по инициативе сервера, но нигде это не раскрывается. Чат это все же клиент-клиент приложение а не клиент-сервер. Расскажите как реализовать именно отправку конкретным пользователям информацию по инициативе сервера, то есть если в БД появились какие-то изменения.

AlexandrRiurik
Автор

Интересные уроки по созданию чата, спасибо.

КонстантинКоренев-йк
Автор

В строке "while(socket_recv($newSocketArrayResource, $socketData, 1024, 0) >= 1)" возникает ошибка "socket_recv(): unable to read from socket [0]"

Tivew
Автор

Расскажите, как это все запустить на реальном хостинге, а не на локалхосте или в командной строке.

igorverterich
Автор

Виктор,
1) можно ли подключиться к порту с сервера на котором висят вебсокеты и их считать?
2) можно ли хранить вебсокеты где-то? Если да, то где?
3) Как понять, где чей вебсокет? только по ip адресу?

interestplace
Автор

Здравствуйте Виктор Гавриленко, у меня вопрос, после некоторого простоя с момента запуска php -f server.php в консоли выскакивает ошибка:
Warning: socket_recv(): unable to read from socket [10053]:
С чем это связано?

ABC--ABC
Автор

Спасибо большое за урок и тем более за скорость, не думал что так быстро запишите, благодарю. В статье на хабаре в общее по-другому обрабатываю данные, когда читал думал, что еще расти и расти, но благодаря уроку, стало на много яснее. Будет видео про многопоточность на PHP т.е стоит так измываться над языком или использовать языки, которые под это созданы, а не PHP пихать, куда попало?))

igossmart
Автор

Добрый день. Залил на VPS пример Вашего чата, порт 443, wss указал. Выходит ошибка: Error during WebSocket handshake: Unexpected response code: 500
Домен подставил свой, вместо localhost. Больше ничего не менял.
Сможете подсказать?

АнатолийРоманов-мы
Автор

Так а что получилось у тебя?
Мотаю мотаю, чтобы посмотреть, а результат хз где.

Вначале урока лучше показывать, что будет сделано. Так лучше всего делать.

IsHardynafthardynaft
Автор

Перепечатал все посимвольно, перепроверил уже раз 20 нг соединение работает, а отправка сообщений нет. Я так понял когда доходит дело до foreach c $newSocketArray то он пустой и нечего перебирать, как исправить ХЗ

ЮтубГамно
Автор

Спасибо за уроки, очень доходчиво. Но все это работает на http, если у нас соединение https, то нужно использовать wss:://, но тогда проблема у меня возникает с чтением, так как оно как зашифрованное и соединение не устанавливается. Тобеж я немогу распарсить сам хедер. Подскажите, в чем моя ошибка?

korzunyura
Автор

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

МихаилБикетов-иб
Автор

Классный урок. Думал, что вэбсокеты это слишком сложно, но в принципе, все понятно. Подскажите, а как можно прикрутить к этому коду звуковое оповещение о полученном сообщении? Например, браузер свернут или закрыт другим окном. Сделать бы звуковой сигнал и мигающий титл вкладки, как в ОК, например. И можно ли использовать для идентификации не IP, а имя юзера? Например, у вас два браузера на одном компе, и в итоге при закрытии одного, во втором пишется дисконнект не Chrome а 127.0.0.1.

ИванИванов-шиш
Автор

Урок хороший, но у меня вопрос чем плох вариант чата на setinterval?

denisdchang
Автор

А как работать с базой данных? Сделать чат 1-1 и групповой?

CraZzZyDChannel
Автор

Ввожу в консоли open server php -f server.php выдает следующее : Could not open input file: Server .php, как только на пробовал ни чего не помогает, в чём проблема ?

ГригорийЯковлев-во
Автор

а как переделать этот чат под чат тех поддержки?

diamond-watch
Автор

КАК ПРИ ОТКРЫТИИ ЧАТА С ПОЛЬЗОВАТЕЛЕМ, СРАЗУ ПЕРЕЙТИ НА ПОСЛЕДНИЙ

dokturaka
Автор

Как же vscode кошмарит автора. Хорошо хоть чутка подсказывает

КонстантинЯрилин