Protokol Jabbersnadná komunikace

Instant messaging (IM) zažívá obrovský úspěch jako nástroj, který umožňuje přímou komunikaci mezi uživateli. V n


Instant messaging (IM) zažívá obrovský úspěch jako nástroj, který umožňuje
přímou komunikaci mezi uživateli. V některých případech již dnes nahradil
e-mail. Nyní vyvojáři používají tuto technologii pro komunikaci mezi aplikací a
uživatelem a mezi dvěma aplikacemi.
Donedávna ovládala instant messaging jen hrstka poskytovatelů služeb. V
současné době jsou také díky tomu populární služby IM komunikační ostrovy
založené na patentovaných protokolech. Vývojáři tak čelí obtížnému rozhodnutí
podporovat četné protokoly, nebo se upoutat pouze na jeden. Nehledě na výběr
jsou společnosti závislé na serveru, který vlastní poskytovatel IM.
Otevřené protokoly mohou vývojářům pomoci dostat se z této patové situace.
Výhody jsou různé otevřené protokoly stimulují vývoj soupeřících implementací
(některé z nich jsou open source), povzbuzují rozšíření a zavádění obecných
protokolů a tak předcházejí vývoji komunikačních ostrovů. V království instant
messagingu otevřené protokoly zajišťují, že otázky interoperability uzavřených
systémů a protokolů nebudou bránit rozvoji služeb založených na instant
messagingu.
Jabber je otevřený protokol pro okamžité odesílání zpráv. Je hlavním kandidátem
na obecný protokol v oblasti IM, který má potenciál rozbít vládu proprietárních
protokolů pro instant messaging.
Standardy Jabberu a jeho architektura pomáhají vytvářet distribuovaný IM systém
připomínající e-mailové systémy napříč internetem, kdy se uživatel připojuje
lokálně. Tento přístup je diametrálně odlišný od jednolité systémové
architektury současných verzí např. AIM (AOL Instant Messenger), ICQ, MSN
(Microsoft Network) a Yahoo, kde centrální server nebo skupina centralizovaných
serverů obstarává odesílání zpráv. Jabber se také podobá e-mailové architektuře
jinou věcí adresuje totiž své koncové body (osobu, zařízení, software) metodou
téměř totožnou s adresováním SMTP (Simple Mail Transfer Protocol). Například
jmeno@acme.cz je platná adresa Jabberu nebo JID (Jabber ID) v řeči Jabberu.
Díky těmto důvodům jsou systémy založené na Jabberu lépe škálovatelné než jiné
existující systémy. Navíc protokol bere v úvahu i proprietární IM služby, což
se také může zdát důležitým. Různé serverové implementace Jabberu jsou volně
dostupné, což znamená, že se stáváte nezávislým na službách IM třetích stran.

Potřebné vybavení
K práci s Jabberem potřebujete stáhnout následující nástroje: Jabber server,
Jabber klienta a API rozhraní, které nám pomůže překonat složitosti socket
managementu, vytváření zpráv, XML parsing a další.
Nezáleží jaký vyberete Jabber server, protože všechny akceptují Jabber XML
standard. V tomto článku používáme open sourcový Jabberd, což je originální
implementace jabberového serveru. Jabberd sice není postaven na Javě, ale je
dostupný pro řadu platforem od Unixu, Linuxu přes Mac OS až po Windows. Také
stojí za zmínku open source projekt JabaServer, který je na rozdíl od Jabberdu
napsaný v Javě, ale na druhou stranu není zatím tak vyspělý jako Jabberd a jeho
instalace a zprovoznění je o něco složitější.
Jako uživatelského klienta je možné zvolit například Exodus Communication,
který je také dostupný jako open source. Výhodou tohoto klienta je, že ukazuje,
co přesně XML klient posílá a přijímá. Navíc je možné psát Jabber zprávy jako
čisté XML a posílat je na server. To je velmi užitečné při testování a
experimentování s Jabber protokolem a serverem.
Pravděpodobně nejlepším ze současných open source API (Application Interface)
je Muse. Muse poskytuje snadno použitelné API na vyšší úrovni, které zajišťuje
záležitosti na nižší úrovni, jako je socket connection, stejně jako konverzi
zpráv do XML pro jejich zaslání na Jabber server. Toto rozhraní neslouží pouze
pro Jabber, ale nabízí i Java API pro abstraktní přístup k jiným službám, jako
jsou Yahoo Messenger, ICQ, AIM, MSN Messenger, Gnutella či XML-RPC (Remote
Procedure Call).

První Jabber zpráva
Abyste mohli poslat zprávu, musíte inicializovat Muse Jabber API. Proveďte to
vytvořením instance JabberContext class, kterou potom použijte jako parametr v
metodě createSession():
1 // Inicializuj Jabber prostředí
2 JabberContext jabberContext = new JabberContext("user", "pass", "lo calhost");
3
4 // Vytvoř instanci Jabberu
5 Jabber jabber = new Jabber();
6 // Vytvoř novou session
7 JabberSession jabberSession = jab ber.createSession(jabberContext);

Řádek 2 ukazuje ve shora uvedeném příkladu stvoření nového prostředí.
JabberContext ukládá specifické informace o uživateli (uživatel, heslo a adresa
serveru) a také obsahuje unikátní session identifikátor v případě, že je
session založena později pomocí prostředí. V našem příkladu jsme nastavili
uživatele, heslo a server.
Na řádku 5 je inicializována instance Jabberu, kterou použijeme na řádku 7 k
vytvoření nové JabberSession, tedy hlavního rozhraní programu Muse pro přístup
ke službám Jabber serveru. Hlavní služby serveru jsou: služby připojení (pro
připojení a odpojení z Jabber serveru), uživatelské služby (pro autentizaci a
registraci uživatele), služby dostupnosti (pro obdržení informací týkající se
dostupnosti jiných uživatelů/
/služeb a viditelnosti vlastní dostupnosti), seznam služeb (tedy buddy list
nebo adresář), chatovací služby (zasílání zpráv různých typů skupinový chat,
soukromé zprávy a další), služby serveru (získání informací, které se vztahují
na služby nabízené Jabber serverem), klientské služby (získání informací
týkajících se jiných uživatelů například kdy se konkrétní uživatel naposledy
přihlásil).
Nyní máme inicializovanou Jabber session, pomocí které se za použití metody
connect() na objekt JabberSession můžeme připojit k Jabber serveru.

8// Připojení k serveru
9 jabberSession.connect("localhost", 5222);
Při připojení na Jabber server specifikujeme adresu a číslo portu počítače, na
kterém je server umístěn. Standardní číslo portu pro Jabber je nastaveno na
5222 a k jeho změně dochází jen velmi zřídka.
Nyní, když jsme připojeni na server, můžeme se pomocí login() přihlásit k
uživatelské službě.
10// Zalogování na Jabber server
11 jabberSession.getUserService().lo gin();

Na řádku 11 použijeme JabberSession k získání odkazu na uživatelskou službu
UserService, na kterou potom zavoláme metodu login(). Všimněte si, že metoda
sama o sobě nespecifikuje jakékoli informace o uživateli. Login() získává tuto
informaci z JabberContext spojeného s JabberSession, když se JabberSession
vytvořila na řádce 7.
V tomto okamžiku jsme se úspěšně zalogovali na Jabber server a můžeme začít
posílat a přijímat zprávy. Následující fragment kódu ukazuje, jak sestavit
jednoduchou zprávu s titulkem:

12// Sestavení testovací zprávy
13 JabberChatMessage msg = new
14 JabberChatMessage(JabberChatMessage.TYPE_HEADLINE);
15 msg.setSubject("Hello world");
16 msg.setBody("Hello world");
17 msg.setTo("user2@localhost");

Na řádce 13 jsme vytvořili instanci JabberChatMessage. Jediný parametr určuje
typ zprávy, kterou vyžadujeme: TYPE_HEADLINE. Jméno třídy JabberChatMessage je
lehce zavádějící, protože může být užito pro obsah jakéhokoliv ze čtyř typů
zpráv (obyčejná, chat, titulek a chyby definované Jabber protokolem). Na řádku
15 setSubject() a setBody() určují předmět a tělo zprávy. A nakonec na řádce 17
setTo() nastavuje JID (Jabber ID) příjemce zprávy.
Na pozadí JabberChatMessage převádí všechny informace do svého interního DOM
(Document Object Mode) stromu, takže se XML může snadněji vygenerovat v
okamžiku, kdy jsme připraveni poslat zprávu na Jabber server.
Posledním krokem je poslání zprávy za použití metody sendMessage().

18// Poslání zprávy
19 jabberSession.sendMessage(msg);

Široké možnosti
Jak je vidět na příkladu uvedeném výše, Muse API efektivně skrývá všechny
detaily týkající se managementu připojení a práce s XML, čímž vývojářům
umožňuje soustředit se na vytváření systému zasílání zpráv.
Tento článek byl pojat jako základní úvod k protokolu Jabber a několika open
source projektům, které mohou pomoci s využitím této technologie v praxi.
Možnosti pro použití protokolu jsou široké a nejsou omezeny jen na klasický
instant messaging. Jabber by také měl mít dopad na oblast vnitrofiremní
spolupráce. Jak bylo předvedeno výše, lze využívat výhod Jabberu a instant
messagingu již po napsání několika málo řádek kódu. A i když se vůbec nedostalo
například na zjišťování přítomnosti a další služby, které lze také
implementovat podobně snadno jako zasílání zpráv, je vidět, že Jabber má před
sebou také díky své otevřenosti slibnou budoucnost.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.