MSN-kompatibilis egyéni emotikonok kezelése XMPP/Jabber-ben

Post on 26-Jan-2016

40 views 1 download

description

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 - PowerPoint PPT Presentation

Transcript of MSN-kompatibilis egyéni emotikonok kezelése XMPP/Jabber-ben

MSN-kompatibilis egyéni emotikonok

kezeléseXMPP/Jabber-ben

BemutatásNé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

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

<message from='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: <presence from='dj@yak/Work' to='sabine@yak'> <status>Online</status> <priority>1</priority></presence>

iq stanza

•contact list lekérése: <iq type='get' id=”roster_1”> <query xmlns='jabber:iq:roster'/></iq>

•válasz: <iq to='juliet@example.com/balcony' type='result' id='roster_1'> <query xmlns='jabber:iq:roster'> <item jid='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) <msnobj Creator="alice@example.com" Size="978" Type="2" Location="TFRC5.dat" Friendly="AAA="SHA1D="Uz3MQadmIWHed3saSdwcTo/Tc7U=" SHA1C="e7vZQCbXV30xf3gngY3P3slZhts="/>

(baaha)<msnobj Creator="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

<message to="julie@capulet.com" from="romeo@montague.net"> <emoticons> <emoticon alias="(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ó?

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

•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

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

Jabber + P2PJabber +

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-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-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-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