Cum se face un robotel pentru messenger ? (avertisment: articol tehnic)
Primul raspuns: foarte simplu – exista deja niste biblioteci care abstractizeaza protocolul, dupa care tu te gandesti ce vrei sa faca&zica robotelul, implementezi, te distrezi vorbind cu el, gata.
Raspunsul mai detaliat
E bazat pe faptul ca noi am ales Java pentru implementare (multithreading usor, exista biblioteci si pentru Yahoo! si Google) si contine sfaturi iesite din experienta si cautarile noastre.
Yahoo! 
Protocolul pentru Yahoo! Messenger este proprietar Yahoo!, insa exista un suflet nobil care a facut reverse engineering pe protocol si a creat proiectul jYMSG.
Dat fiind ca protocolul e proprietar, proiectul se ‘tine’ de modificarile facute de Yahoo! cu o latenta (relativ mica) – de ex versiunea 0.6.0 pe care am incercat-o prima oara nu reusea sa faca login. Versiunea 0.6.4 este mult mai compatibila, singurele problemutze pe care le-am gasit noi fiind
- timeout-ul la thread-ul de mentinere a conexiunii in cazul in care lumea ‘tace’ – era facut sa trimita un mesaj de keepalive o data la 20 minute, pe cand Yahoo! inchide conexiunea dupa 10 (fix: Session.java -> private class PingThread -> public int time = 1000*60*8; in loc de public int time = 1000*60*20; bineinteles, numarul asta ar putea sa fie undeva intr-un fisier de configurare)
- faptul ca protocolul nu este implementat bine pentru partea de acceptat cererile de “add friend” – nu am apucat sa sapam indeajuns cat sa vedem cum se corecteaza
- aranjamentul surselor din pachetele oferite nu e acelasi cu declaratiile de clase – prin urmare IDE-urile clasice protesteaza si nu vor sa le compileze
Ca mod de lucru, clasa STest\SwingTestClient.java ofera un model bun de cum se foloseste partea de protocol – scotand tot ce tine de interfata obtii o implementare de protocol.
GTalk

La GTalk este mult mai simplu – protocolul folosit este Jabber pentru care am gasit o biblioteca foarte buna – smack de la Ignite Realtime.
Parametrii de conectare pentru GTalk sunt:
ConnectionConfiguration config = new ConnectionConfiguration(“talk.google.com”, 5222, “gmail.com”);
dupa care daca pui un PacketListener pe conexiune ai rezolvat daraua.
Cititi aici despre robotelul nostru pentru lista.lu.
irina