|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
|
numerovan |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: 2 Всего: 2 |
Здравствуйте, что-то ни как не могу понять до конца - как правильно реализовать онлайн консультанта.
В осн. проблемы в сокетах. Задача следующая: заходит админ на сайт под своим аккаунтом, программа видит что он зашел и автоматом горит индикатор что админ на сайте и что можно ему писать сообщение, чат начинает работать. Допустим зашли на сайт сразу 5 клиентов, они пишут админу через чат сообщения. Админ может сразу просматривать все приходящие сообщения и выбирать в какой последовательности отвечать пользователям. У пользователей только одна прямая связь с админом. Надеюсь доходчево объяснил. Далее стандартный функционал - отправить, отобразить сообщение у админа и у того кто написал, закрыть чат, открыть снова чат и т.д. Тестовый html
Яваскрипт
и сам серверный php
При таких вот программах (файлах) происходит следующее: сколько открывается страниц с этим чатом сколько и соединений открывается, если один пишет, то у всех отображается, хотя это конечно можно спокойно попдправить в функции send_message($msg) Помогите более правильно направить эти программы, а то чет голова уже не работает у меня. Не понятные вопросы для меня следующие: 1. Необходимо вычислять открытые сокеты, и ориентируясь на эти каналы (сокеты) писать пользователям ... всмысле вычислять пользователей по сокетам ? 2. Не нужно же для каждого пользователя открывать отдельный порт, да ? 3. Переписку может лучше в сессию записывать, а не в базу данных, как думаете ? |
||||||
|
|||||||
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: 2 Всего: 2 |
Наконец доделал свою задачу. Радости полные штаны ).
Задача: 1. онлайн-консультант на сайт для улучшения сервиса сайта 2. через веб-сокеты, чтоб добится получения вопросов/ответов в реальном времени, а так же без большой нагрузки на сервер. 3. консультант только один, которые помогает другим пользователям Поочереди расскажу про файлы, так как тема PHP-сети, то начну со скрипта для работы сокетов
|
|||
|
||||
numerovan |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: 2 Всего: 2 |
Сам класс выглядит следующим образом:
Добавлено через 5 минут и 7 секунд Далее бекэнд, который включает чат или отправляет письмо
Добавлено через 11 минут и 29 секунд html выглядит так:
|
||||||
|
|||||||
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: 2 Всего: 2 |
delete
Добавлено через 14 минут и 34 секунды яваскрипт ни как не могу сюда разметить, ну да ладно Это сообщение отредактировал(а) numerovan - 30.11.2014, 00:56 |
|||
|
||||
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: 2 Всего: 2 |
Добавлено через 12 минут и 2 секунды яваскрипт Присоединённый файл ( Кол-во скачиваний: 2 ) Untitled_1.js.zip 4,83 Kb |
|||
|
||||
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: 2 Всего: 2 |
картинку чуть позже выставлю ...
Библиотеки яваскриптов использовались следующие: jquery-2.0.3.min.js, jquery.mousewheel.js, jquery.jscrollpane.min.js Еще не много нужно подтачить, картику выложу чуть позже, кому интересно будет посмотреть ... Если что пиши какие нибудь замечания и т.д. Меня лично вот смущает идентификация пользователей, то есть сейчас она идут через куку, а если ее вырубить, то и чат не будет работать. Потом еще создание горячей клавиши - жмем на интер сообщение отправляется, но при этот в текстовом поле нет чтоб курсор вернулся на начало, он перемещается на вторую строчку, т.к. нажали интер. Конечно нужно спросить в разделе яваскрипта, но как говорится - кую железо пока горячо. Это сообщение отредактировал(а) numerovan - 30.11.2014, 01:17 |
|||
|
||||
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: 2 Всего: 2 |
Кстати, время просчитывания массивов в ф-ии socket_select() лучше ставить в 1 секунду. В моем случае если в 0, то загрузка процессора машины равняется 99%, если 0.7 то где-то 15% ... в общем 1 сек. это то что надо и при этом скорость передачи данных визуально не меняется.
|
|||
|
||||
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: 2 Всего: 2 |
Теперь проблема с настройкой на веб-сервере, в моем случае CentOS 6.
Ни как сокет на сервере не хочет соединятся с браузером, хотя на локалке все хорошо было ... |
|||
|
||||
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: 2 Всего: 2 |
Решил задачу ... правда пришлось завалить, пока юзал, весь сервер. Если стоит nginx, то в нем нужно указывать поддержку сокета, если его нет, как в моем случае сейчас, то по сути ни чего, на веб-сервере (Апачи), не нужно делать. В php-скрипте, как выяснил сейчас, нужно правильно прописать host. Повторюсь портов открывать не нужно, который вы собираетесь использовать порт, в моем случае 9000, он должен быть свободен и другие программы не должны его использовать. Так в общем этот host не должен быть назван как "localhost" и не должен быть обозначен $_SERVER['SERVER_NAME'], нужно указать в нем либо IP машины, либо название домена.
|
|||
|
||||
numerovan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 549 Регистрация: 1.12.2007 Репутация: 2 Всего: 2 |
защитный сервис cloudflare.com блокировал сокеты, пришлось пока от него отказаться, для того чтоб сокеты работали (онлайн-консультант).
|
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Сеть | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |