Страница 1 из 1
Список пользователей онлайн для web support, скрипт на PHP
Добавлено:
Вт мар 24, 2015 1:06 pm
259bit
Добрый день. Стоит задача кастомизировать логику работы веб-суппорта. Возможно ли удаленному web-серверу (php) получить список пользователей онлайн?
Re: Список пользователей онлайн для web support
Добавлено:
Вт мар 24, 2015 2:17 pm
Алексей Пикуров
Здравствуйте.
Можно, почему нет. Протокол открыт, с php-скрипта вы можете подключиться к серверу и через сокеты залогиниться и достать всё, что нужно.
Опишите подробнее вашу задачу.
Re: Список пользователей онлайн для web support
Добавлено:
Вт мар 24, 2015 2:32 pm
259bit
Соединение посетителя сайта только с пользователями mychat, которые онлайн.
Re: Список пользователей онлайн для web support
Добавлено:
Вт мар 24, 2015 3:02 pm
Алексей Пикуров
Вы хотите воспользоваться нашим WEB-суппортом или написать свой?
Re: Список пользователей онлайн для web support
Добавлено:
Вт мар 24, 2015 3:25 pm
259bit
Собственно хотел немного модифицировать скрип вызова вашего суппорта.
То есть php-скриптом запросить список пользователей онлайн, отфильтровать по своим нуждам и вставить в вызов вашего js скрипта.
Про протокол понял, буду изучать. Спасибо.
Re: Список пользователей онлайн для web support
Добавлено:
Вт мар 24, 2015 4:50 pm
Алексей Пикуров
Я думаю, вам будет проще это сделать через Intergation API, чтобы не городить огород с соединением и авторизацией на сервере.
Я напишу простую функцию для вашей задачи и приведу пример. В версии 5.10 будет, ожидайте.
Re: Список пользователей онлайн для web support
Добавлено:
Вт мар 24, 2015 4:57 pm
259bit
Спасибо!
Re: Список пользователей онлайн для web support
Добавлено:
Вт мар 24, 2015 6:27 pm
Алексей Пикуров
Команда готова. Предварительное описание:
http://nsoft-s.com/mcserverhelp/mcserv. ... uslist.htmСправка неполная, в процессе переделки, как и веб-админка, так что если будут вопросы - задавайте, я поясню.
Re: Список пользователей онлайн для web support
Добавлено:
Вт мар 24, 2015 7:38 pm
259bit
Если я правильно понял, чтобы использовать Integration API, мне необходимо подключить к PHP mychat.dll?
Re: Список пользователей онлайн для web support
Добавлено:
Ср мар 25, 2015 11:16 am
Алексей Пикуров
Нет, для этого mychat.dll не нужен.
Последовательность действий для работы с IntegrationAPI сильно упрощена.
- Открываете сокет-соединение с сервером MyChat по TCP 2004 (или другим, если у вас сервер настроен не на 2004 порт).
- Отправляете строку "mc5.0" и добавляете в конец CRLF (#13#10). Всего 7 байт.
- Читаете из сокета то, что шлёт сервер, сообщение заканчивается CRLF (#13#10). Можно это не анализировать, если вам это не нужно.
- Отправляете на сервер свой пакет. Пакет сформирован вот так:
MagicPacket + cs_integration_api + IntToHex(iFlag, 2) + IntToHex(iCmd, 4) + JSONobj.AsJSon + CRLF
MagicPacket - #23#6 (2 байта);
cs_integration_api - "0077" (4 байта);
iFlag - десятичное 48;
IntToHex(iCmd, 4) - для вашего случая это команда "000F" (4 байта);
JSONobj.AsJSon - JSON объект, описан в справке;
CRLF - 2 байта, #13#10. - ожидаете ответа от сервера, читаете сокет и парсите то, что пришло.
ответ - это MagicPacket + JSON объект + CRLF.
Re: Список пользователей онлайн для web support
Добавлено:
Ср мар 25, 2015 5:20 pm
259bit
Расскажите, пожалуйста, подробнее про MagicPacket - #23#6 (2 байта); Как мне его изобразить в php скрипте?
Гугл молчит как партизан.
Re: Список пользователей онлайн для web support
Добавлено:
Ср мар 25, 2015 6:20 pm
Андрей Раков
Это 2 символа с кодом 23 и 6, вы их можете заменить юникод представлением, что-то вроде "\u0017\u0006"
Re: Список пользователей онлайн для web support
Добавлено:
Ср мар 25, 2015 7:01 pm
Алексей Пикуров
К сожалению, у нас спецов по php нет, так сложилось. Поэтому придётся помучить гугл
Re: Список пользователей онлайн для web support
Добавлено:
Чт апр 02, 2015 3:31 pm
259bit
Большое спасибо за новый функционал, все получилось!
Re: Список пользователей онлайн для web support
Добавлено:
Чт апр 02, 2015 3:54 pm
Алексей Пикуров
Пожалуйста. Может, поделитесь своим кодом для грядущих поколений?
Re: Список пользователей онлайн для web support
Добавлено:
Чт апр 02, 2015 5:14 pm
259bit
Код: Выделить всё<?php
$address = 'localhost'; //Адрес сервера
$port = 2004; //Порт работы сервера
if (($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) { //Создаем сокет
//AF_INET - семейство протоколов
//SOCK_STREAM - тип сокета
//SOL_TCP - протокол
echo "Ошибка создания сокета";
};
$result = socket_connect($socket, $address, $port); //Подключаемся к серверу
$msg_to_server = "mc5.0\r\n"; //Сообщение приветствия
socket_write($socket, $msg_to_server, strlen($msg_to_server)); //Отправляем серверу сообщение
$msg_from_server = socket_read($socket, 1024); //Обязательно читаем сообщение от сервера
//Составляем пакет для запроса
$unicode_magik_packet = '\u0017\u0006'; //Волшебный пакет
$magik_packet = json_decode('"'.$unicode_magik_packet.'"'); //Кодируем в json
$cs_integration_api = "0077";
$iFlag = "48";
$iCmd = "000F";
$CRLF = "\r\n";
$json_string = ('{"UINS":"8,10","ServerKey":"iddqd"}');
$msg_to_server = $magik_packet.$cs_integration_api.$iFlag.$iCmd.$json_string.$CRLF;
socket_write($socket, $msg_to_server, strlen($msg_to_server)); //Отправляем серверу сообщение
$out_source = socket_read($socket, 1024); //Читаем сообщение от сервера
$out_replace = str_replace($magik_packet,"",$out_source); //вырезаем магический пакет
$out_array = json_decode($out_replace,true); //конвертируем json в массив
print_r($out_array); //смотрим что получилось
if (isset($socket)) { //закрываем подключение
socket_close($socket);
}
?>
Re: Список пользователей онлайн для web support
Добавлено:
Чт апр 02, 2015 5:16 pm
Алексей Пикуров
Спасибо. Я обернул ваш текст в phpbb тег code, чтобы читать стало удобнее (с отступами).
Re: Список пользователей онлайн для web support
Добавлено:
Чт апр 02, 2015 5:20 pm
Алексей Пикуров
У вас есть опыт создания phpbb модов для форума phpbb?
Re: Список пользователей онлайн для web support
Добавлено:
Чт апр 02, 2015 5:23 pm
259bit
Алексей Пикуров писал(а):У вас есть опыт создания phpbb модов для форума phpbb?
В данный момент нет, да и желания его получить в целом тоже.
Re: Список пользователей онлайн для web support
Добавлено:
Чт апр 02, 2015 5:27 pm
Алексей Пикуров
Просто мы недавно как раз занимались вопросом интеграции с phpbb, решение заработало, но хотелось бы его оформить отдельным модом для простоты, а не заставлять людей вкручивать наши исходники прямо в "боевой" работающий форум.
Ещё раз спасибо за исходник, наверняка он кому-то пригодится.
Re: Список пользователей онлайн для web support
Добавлено:
Чт апр 02, 2015 7:26 pm
SV
Наверно лучше сообщение отделить в отдельную тему, что бы потом проще искать.
Re: Список пользователей онлайн для web support
Добавлено:
Чт апр 02, 2015 7:39 pm
Алексей Пикуров
SV, какое именно сообщение?
Re: Список пользователей онлайн для web support, скрипт на PHP
Добавлено:
Вт апр 07, 2015 5:20 pm
SV
Re: Список пользователей онлайн для web support, скрипт на PHP
Добавлено:
Чт апр 09, 2015 10:46 am
Алексей Пикуров
У нас планируется отдельный раздел на сайте для всевозможных интеграций MyChat с разными технологиями и софтом, там и разместим скрипт для отправки сообщений из php, немного модифицированный.
Re: Список пользователей онлайн для web support, скрипт на PHP
Добавлено:
Чт сен 29, 2016 12:47 pm
Алексей Пикуров
Раздел справки для работы с MyChat Integration API:
https://nsoft-s.com/mcserverhelp/index. ... ionapi.htmВся самая актуальная и свежая информация там.