MSN-kompatibilis egyéni emotikonok kezelése XMPP/Jabber-ben Bemutatás Németh Ádám,
XMPP • eXtensible • Messaging and • Presence • Protocol
XMPP • IETF RFC (20, 21 érdekes) • XML-alapú • Eredeti: Jabberd, 1998, Jeremy Miller, GNU GPL • IM + “általános middleware szolgáltatás” • Sun, Google, Adobe alapprotokoll, IBM SameTime kompatibilis, AOL elvileg lesz, Apple, ISP-k, kormányhivatalok, cégek...
XMPP felépítés • Kliensoldalról: kliens-szerver architektúra • Szerveroldal: elosztott monstrum • SMTP-hez hasonló (bárki futtathat saját szervert, azonosítók) • A protokol kiterjeszthető - XMPP Standards Foundation felügyeli a hivatalosakat • Transportok: csatlakozás más protokollokhoz (MSN, AIM, SIP...)
Miért fontos nekünk? • Google Talk, Sun IM, Apple iChat Server, Portugal Telecom, GMX (Németország),... • Webes integráció: Magyarországon először fre ben • SchJabber: 2004 • Gmail.BME? • Többiek: NDA :(
XMPP Platformok • Desktop IM / C++, Java,.NET... • Web IM: Flash, JavaScript, újabban XUL • Mobil IM: Symbian, PocketPC, J2ME • Beágyazott, middleware - állítólag ilyen is van • 15+ Platform, 15 szerver, 15 nyelv, 50 lib, 90+ kliens
Nyelvi elemek
XMPP nyelv • message • Üzenetküldésre • presence • “The ability to communicate” - jelenlétállapotok (az is, mit hallgatsz épp) • iq • minden egyéb: set, get, query
Message stanza <body>Wherefo Wherefore art thou, Romeo?
presence stanza • Küldés: xa Gone home for the evening • Fogadás: Online 1
iq stanza • contact list lekérése: • válasz: Friends
Önlabtéma 2007 ősz • Jabber-kliens van sok • Probléma: ismerősök visszaállnak Google Talkról, mert “nincsenek olyan smiley-k” • Megoldás: csináljunk! • XSF-fel együttműködve (Peter Saint- André) • Deliverables: 1) XEP 2) (esetleg) kliens • Előny: tettünk valamit az emberiségért :) • Hátrány: Nem implementálni szívás, kitalálni
Önlab lépései • MSN Protokollanalízis • Létező megoldások felderítése • Protocol proposal draft • Demo implementáció • Protocol proposal
MSN Protokoll • SIP-szerű • Üzenet előtt MSNObjectként • Ha nincs meg - file request! • Utólagos kitöltés • Beszélgetésenként más (thread / session)
Smiley MSNObject MSG 1 N 232MIME-Version: 1.0Content-Type: text/x-mms- emoticon(tux) (baaha) " Size="691" Type
MSNObject XMPP • payload • elé • külön namespace
MSNObject XMPP II. First proposal <emoticon <emoticon alias="(heart)" type="smiley" filename="heart.png" sha1="Id0n\'tkn0wSH418YH34Rt"/> If my (heart)'s dear love--
Fájlátküldés? • Jelenleg: IQ stanza • nincs meg a smiley-> get • válasz (result): smiley fájl base64 encoded • Intelligensebb megoldások: ld. később
Demo implementáció • Java -ban (Jive Software Smack) • Küldés-fogadás tesztelésére
Demo implementáció Architektúra • EmoticonEntity • EmoticonManager • EmoticonPacketExtension (+Provider) • EmoticonTransferPacket (+Provider) • Sender és Receiver tesztkliens
Problémák (küldés) • A használt smiley-kat az üzenet szövege ( )alapján lehet megmondani • Az üzenet a küldés pillanatáig változhat • Ergo PacketExtension toXML()-jében meg kell nézni az üzenetet, ismernie kell azt • De: Csak az EmoticonManager ismeri a smiley-kat, viszont nem tud róla, mikor küldenek üzenetet • Eredmény: mindenki ismer mindenkit :(
Problémák (fogadás) • Nehogy már a fogadó processnek kelljen beszereznie a smiley-kat : EmoticonManager! • EM megint ismeri az üzenetet • UPDATE?? • Web?? • MSN-átjáró?
Még nincs kész...
Intelligens megoldások • SI-Pub (XEP-153) • User Avatar (XEP-84)-szerű (PubSubon keresztül) • SI-Pub csomagolása smiley fejlécbe
Eddigi reakciók • Peter Saint-André • Per Erkström
További infó tőlem • (C++ Jabberkliens, Smack jabberbot, értelmesebb dolgok) • Budapest New Technology Meetup Jún. 6 - Egységes Instant Messaging Hálózat Mo.-n • NDA :(
Referenciák
• jabber.org: kliensek, szerverek, libek... • • - XEP- ek (Jingle, User Tune, Publish-Subscribe etc) • Jingle bemutatás (Peter Saint-André): andre.com/jabber/Jingle.pdf andre.com/jabber/Jingle.pdf • IgniteRealtime.org - Jive szerverek, kliensek
Jabber + P2P Jabber + MultiMedia
Jingle pre-history • Eredetileg: Kliens-szerver architektúra • Probléma: fájlátvitel, mediastreaming, SIP??? • Első: TINS (XEP-0111): SIP jabberül • (:-() A kliensoldal bonyolult, jabberben nem divat! • (:-)) Könnyű SIP-transportot írni • Most: JINGLE (XEP-0166) - by Google
Jingle downsides • Van a Jingle (XEP experimental protocol) • Van a libjingle (GNU LGPL lib, C++, by Google) • libjingle nem kompatibilis XEP-0166-tal!!! • Google Talk libjingle alapú • Készül: Jive Spark / Smack Jingle lib (JAVA), de JMF alapú - a Jive szerint is vacak
Jingle advantages • XMPP-alapú - hey, it’s a standard • Egyeztetőprotokoll, mint a SIP (“lesz” gw) • Beépített támogatás tűzfalak megkerülésére • ELVILEG mehet webről is (Flash!) • Nem teljesen kínai, de azért...
Önlabtéma-variációk
Önlabtéma II. • Jingle • Készül egy proto-XEP webre, flash- használattal (“VoIP”, video) • Nincs implementáció • Előny: ismét tettünk valami hasznosat :) • Hátrány: JINGLE ingoványos talaj;előbb- utóbb a ClientSide vagy a Jive úgyis megírja; nincs rendes intelmac IDE hozzá
Önlabtéma III. • Még mindig Jingle • Haverok. Buli. Fanta. De máshol! • Megoldás: VideoLAN (videolan.org) • Kéne egy signaling protokoll, meg chat, minél jobb jelenlétkezelés - Jabber- Jingle! • Előny: Nem túl hasznos, de buli • Hátrány: illegális (Gyenge Anikó szerint), Jingle ingoványos, gyenge implementációk • Sok kódolás, sok szívás lehet
Önlabtéma n. • XEP User Tune: milyen jó lenne, ha bele tudnék hallgatni, másik mit hallgat • Írjunk minél jobb webes klienst • XUL, Anyone? • Mobil: fényképez, fájlt elküld / fogad