370 likes | 530 Views
MSN-kompatibilis egyéni emotikonok kezelése XMPP/Jabber-ben. Bemutatás Németh Ádám, na556@hszk.bme.hu. XMPP. eXtensible Messaging and Presence Protocol. XMPP. IETF RFC 3920-3923 (20, 21 érdekes) XML-alapú Eredeti: Jabberd, 1998, Jeremy Miller, GNU GPL
E N D
MSN-kompatibilis egyéni emotikonok kezeléseXMPP/Jabber-ben • Bemutatás • Németh Ádám, na556@hszk.bme.hu
XMPP • eXtensible • Messaging and • Presence • Protocol
XMPP • IETF RFC 3920-3923 (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, user@domain 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 freemailben • 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
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 <messagefrom='juliet@capulet.com' to='romeo@montague.net'> <body>Wherefore art thou, Romeo?</body> </message>
presence stanza • Küldés: <presence><show>xa</show><status>Gone home for the evening</status></presence> • Fogadás: <presencefrom='dj@yak/Work' to='sabine@yak'> <status>Online</status> <priority>1</priority></presence>
iq stanza • contact list lekérése: <iqtype='get' id=”roster_1”><queryxmlns='jabber:iq:roster'/></iq> • válasz: <iqto='juliet@example.com/balcony' type='result' id='roster_1'><queryxmlns='jabber:iq:roster'><itemjid='romeo@example.net'name='Romeo'subscription='both'><group>Friends</group></item></query></iq>
Ö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) <msnobjCreator="alice@example.com" Size="978" Type="2" Location="TFRC5.dat" Friendly="AAA="SHA1D="Uz3MQadmIWHed3saSdwcTo/Tc7U=" SHA1C="e7vZQCbXV30xf3gngY3P3slZhts="/> (baaha)<msnobjCreator="alice@example.com" Size="691" Type="2" Location="TFR3FA.dat" Friendly="AAA=" SHA1D="as1WxRoW0FXQFVrERtCC1Hec8i8=" SHA1C="AeZUBbzp5rI7tlZJ++ikrO4SeUk="/>
MSNObject XMPP • <message/> payload • <body/> elé • külön namespace
MSNObject XMPP II. First proposal <messageto="julie@capulet.com" from="romeo@montague.net"> <emoticons> <emoticonalias="(heart)" type="smiley" filename="heart.png" sha1="Id0n\'tkn0wSH418YH34Rt"/> </emoticons> <body> If my (heart)'s dear love-- </body> </message>
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 (<body/>)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ó?
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 • http://jabbermania.blogspot.com (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... • http://www.ietf.org/rfc/rfc3921.txt • http://www.xmpp.org/extensions/ - XEP-ek (Jingle, User Tune, Publish-Subscribe etc) • Jingle bemutatás (Peter Saint-André): http://www.saint-andre.com/jabber/Jingle.pdf • IgniteRealtime.org - Jive szerverek, kliensek
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-0166 - 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 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-0118 - 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