Делаю небольшой плагин чата под Вордпресс, используя в качестве основы Java Script библиотеку
Candy (работает с XMPP). В Candy есть функция
SetNickname, которая изменяет ник, но она ничего не возвращает — а значит нельзя узнать был изменен ник или нет (ник не изменится, если занят кем-то другим и т. п.). После вызова SetNickname сервер присылает Presense, сообщение, которое обрабатывается в Candy.Core.Event.Jabber.Room.Presence — оттуда как раз можно узнать был изменен ник или нет.
Как запустить свою функцию из Candy.Core.Event.Jabber.Room.Presence, которая будет уже что-то сохранять в базу данных?
В файле
core.js был найден следующий код, который, как я понимаю, позволяет "цепляться" за события, которые происходят в Candy.
/** Function: registerEventHandlers
* Adds listening handlers to the connection.
*
* Use with caution from outside of Candy.
*/
self.registerEventHandlers = function() {
self.addHandler(self.Event.Jabber.Version, Strophe.NS.VERSION, 'iq');
self.addHandler(self.Event.Jabber.Presence, null, 'presence');
self.addHandler(self.Event.Jabber.Message, null, 'message');
self.addHandler(self.Event.Jabber.Bookmarks, Strophe.NS.PRIVATE, 'iq');
self.addHandler(self.Event.Jabber.Room.Disco, Strophe.NS.DISCO_INFO, 'iq', 'result');
self.addHandler(_connection.disco._onDiscoInfo.bind(_connection.disco), Strophe.NS.DISCO_INFO, 'iq', 'get');
self.addHandler(_connection.disco._onDiscoItems.bind(_connection.disco), Strophe.NS.DISCO_ITEMS, 'iq', 'get');
self.addHandler(_connection.caps._delegateCapabilities.bind(_connection.caps), Strophe.NS.CAPS);
};