Работа над протоколом jabber была начата ещё в 1998 году, но более широкое распространение получил в середине 2000 года. С того времени появилось много библиотек и реализаций данного протокола, почти для всех языков программирования. Более детальный список можно посмотреть на оффсайте: http://xmpp.org/software/libraries.shtml.
Extensible Messaging and Presence Protocol, сокращённо XMPP, это открытый протокол, основанный на XML, предназначенный для обмена мгновенными сообщениями и информацией о присутствии (списке контактов, например). Был опубликован в виде RFC 3920. Он остаётся основным протоколом технологии обмена мгновенными сообщениями Jabber. Главной целью протокола – была расширяемость, таким образом, он быстро получил много дополнительных возможностей, такие как передача голоса или передача файлов.
На оффсайте набор библиотек для работы на PHP представлен тремя вариантами:
- JAXL
- Lightr
- xmpphp
Больше всего приглянулась библиотека xmpphp, как самая простая в использовании и с довольно удобными вызовами. О ней и пойдёт разговор.
Для того чтобы начать её использовать необходимо подключить файл XMPP.php, перед началом работы. Дальше создать объект класса XMPPHP_XMPP с указанием основных параметров соединения: джаббер сервера, порта подключения, данных для авторизации, и уровня логирования.
Фрагмент кода приведен ниже.
include ‘XMPPHP/XMPP.php’;
$conn = new XMPPHP_XMPP('jabber_server_here', 5222, 'your_login', ' your_password', 'xmpphp', 'jabber.ru', $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO);
$conn->useEncryption(false); //disable encryption
try
{
$conn->connect();
$conn->processUntil('session_start');
$conn->presence();
$conn->message('your jabber here', 'текст сообщения, которое хотите отправить');
$conn->disconnect();
}
catch(XMPPHP_Exception $e)
{
//here you can process $e->getMessage() if some error occurred;
}
В примере было отключено шифрование командой $conn->useEncryption(false). Это нужно делать непосредственно перед вызовом метода connect, пока не было установлено соединение. Позволит решить проблему, если вы получили ошибку вида «Fatal error: Cannot access protected property XMPPHP_XMPP::$use_encryption …», или в случае, если вы хотите отключить SSL/TLS шифрование.
Данное решение, использовать джаббер для отсылки сообщений средствами PHP, может пригодится для отправки извещения вам прямо в messenger об очередном пришедшем комментарии с вашего форума, заказе на покупку из web-магазина, поста из агрегатора новостей или другой важной информации с вашего приложения на сервере.
Интересная статья. Спасибо.
ОтветитьУдалитьПожалуйста, рад стараться! На практике опробовали?
ОтветитьУдалитьСтатья то интересная, согласен. А вот как реализовать такое:
ОтветитьУдалить.....
$conn->processUntil('session_start');
if(!$link)
{
die("Can't connect to DB");
}
else
{
$sql="SELECT data FROM rsstable WHERE id=3";
$query=mysql_query($sql);
echo "sss";
}
if (!mysql_error())
{
$conn->message('admin@azon-pc', $query.' SYSTEM SEND SOME MESSAGE');
} else
{die("ERROR");}
.....
То есть от правка сообщений из базы.
Spatial, если честно не понял вопроса, в чём заключается у Вас проблема в реализации, в чём стоит вопрос?
ОтветитьУдалитьА можно ли реализовать запрос авторизации и приглашение в чат? Например польозователь gtalk, пока не вышлешь приглашение в чат - не получает сообщений. В старых версиях xmpphp вроде что то было.
ОтветитьУдалитьОлег, насколько мне известно, xmpphp API не позволяет делать автоматизированный buddy request. Как сделать отсылку и подтверждение invite to chat касательно Google Talk я тоже сказать не могу, такой информации нигде не нашёл, в интернете все только и задаются этим вопросом, но ответа никто не дал. Если кто-то сталкивался с таким вопросом и нашёл решение, буду благодарен, если сообщите.
ОтветитьУдалить