Az iMect Bt. új Videotelefon alkalmazást indított el az iWiW felületén. Így szól az ajánlott szöveg, ezzel lehet bejelenteni az újdonságokat. Arról szól ez a bejegyzés, hogy mit, miért, kinek és hogyan.
A leírása így szól: ingyen beszélgethetsz a többi iWiW taggal, csak egy webkamera kell hozzá. Beállítható a foglaltság, a minőség, kikapcsolható a videó (csak hang).
Azaz távolról nézve olyan, mint mondjuk a Skype, csak épp bent az iWiW-en fut. Így néz ki az ajánlója:

1. Tanulási és kipróbálási céllal
Meg szerettem volna tanulni az OpenSocial fejlesztés csínját-bínját és ki szerettem volna próbálni az új Adobe Flash P2P technológiát, mindezt a hello world szintnél jóval mélyebben. Aztán jött bele még egy kis Google AppEngine is.
2. Verseny
Inspirált az iWiW fejlesztői verseny, ezzel az alkalmazással nevezek rá. Igyekeztem a támpontoknak megfelelni.
A célközönségre jó példa a szüleim korosztálya. A többségüknek hiába mondanám, hogy telepítse fel a Skype-ot, nem fogja megtenni. Én pedig lusta vagyok átmenni és megcsinálni nekik. Viszont az iWiW-et remekül és gyakran használják, így kapnak hozzá egy videochat eszközt.
A fejlesztői ÁSZF 8.3-as pontja elvileg tiltja, hogy know-how-t tegyek közzé, tiszta Apple iPhone NDA. De azért közzéteszem. :-) A jelenlegi megoldással "óriások vállán" nyugszik az alkalmazás, a terhelés megoszlik az iWiW, a Google és az Adobe szerverei között, az én költségem pedig egészen pontosan 0 Ft. Az alkalmazás három fő részből áll:
Az OpenSocial ugye JavaScript-es ügy, itt az API-ja mellett még MooTools 1.2-t is használok. Ez a rész jeleníti meg az alkalmazást, foglalkozik a néző és az adatlap tulajdonos adataival, kezeli az elérhetőséget/foglaltságot, a hívásindítást, fogadást, elutasítást.
Az elérhetőség/foglaltság az iWiW saját rendszerén történik felhasználónkénti adattárolással. 6 másodpercenként frissül ezt az adat, így lehet tudni, hogy ki éppen online és nem foglalt-e. Megkérdeztem a Virgo-s srácokat, hogy bírni fogja-e a rendszer ezt a terhelést, egyelőre az az álláspont, hogy mehet.
Nyilván csak akkor lesz gond, ha nagyon sokan használják, akkor viszont át tudok menni Google AppEngine-re és annak fizetős változatával le tudom kezelni a nagy tömegű lekérdezést. Ha sokan használják, akkor ez a költség nem lesz gond.
Mivel az owner számára nem lehet adatot írni, ezért egy külső szerverrel kell lebonyolítanom a híváskezdeményezést, illetve a Flash objektumok összekapcsolásához is szükséges. Az AppEngine-re esett a választásom, mert ingyen kapok óriási terhelhetőséget, így ez a teljesítmény sokáig elég lesz, kb. 20 000 egyidejűleg bejelentkezett felhasználóig.
Az egész csak néhány sor Python kód és még adatbázis-kezelés sem kell hozzá. Az adatokat maximum 120 másodpercig tárolom, erre pedig kíváló a Memcache, gyors, egyszerű. Ráadásul jogilag is védve vagyok, hiszen innen minden adat két percen belül elpárolog, a többi pedig az iWiW rendszerén belül marad.
Maga a beszélgetés már Flash-ben történik, ActionScript 3-ban írtam meg. A Flash objektumok közvetlenül, média szerver beiktatása nélkül peer-to-peer kommunikálnak UDP protokollon keresztül. Az UDP sokkal hatékonyabb audio/video továbbítására, mert megengedi, hogy elvesszen néhány adatcsomag, ami észrevehetetlen, viszont az átvitel "gördülékenyebb" lesz tőle. Ez a 10-es player nagy újdonsága és elég jól működik.
Ez nem olyan P2P, mint a BitTorrent, a kliensek már nem adják tovább a kapott streamet, ezért csak néhány fős beszélgetésekhez használható, pont az alkalmazásomhoz találták ki. Mindössze egyetlen dologhoz szükséges médiaszerver, azon regisztrálják a Flash objektumok az adás azonosítóját, tehát csak néhány bájtról van szó.
Az Adobe Stratus szolgáltatása viszont ezt az "összekapcsoló" médiaszervert is megoldja helyettem, teljesen ingyen lehet használni. Tehát mégegyszer: a Flash objektumok a Stratus és az AppEngine segítségével kapcsolódnak egymáshoz, utána viszont minden adat elpárolog és egymással kommunikálnak peer-to-peer. Nincs belehallgatás, nem tudom kideríteni, hogy ki mennyit és kivel kommunikál.
A fejlesztés kb. egy hónapig tartott tanulással együtt. Az OpenSocial API úgy működött, ahogy azt a doksi írta és sokat segített a dev.iwiw blog. Jól lehetett érezni, hogy ezerrel dolgoznak az iWiW vonatkozó alrendszerein, mert sokszor futottam leállásokba és lassulásokba. Ez nem rossz, jó látni, hogy melóznak vele.
Az AppEngine egy sajátos valami, teljesen egyedi mindene. Jópofa a lokális szervere, kényelmes használni és telepíteni az új verziókat. A Python programozási nyelv viszont nagyon furcsa nekem. Az Adobe Flash P2P is jól működik, a Stratus pedig villámgyors.
Összességében véve kevesebb kiforratlan dologba ütköztem, mint szoktam, ami váratlan. Persze azért volt egy-két megszokott "crazy hour", amikor nem jöttem rá miért nem működik és csapkodtam a billentyűzetet. A fejlesztő élete már csak ilyen.
Meglepő, hogy a sok érintett technológia ellenére igen kicsi lett az alkalmazás letöltendő mérete: az összes fájl összesen 61 kbyte, és ebben két csengőhang is benne van. A forráskód mindenestül, kommentekkel együtt kábé 800 sor.
Szerintem elegendő funkció van az alkalmazásban az induláshoz, csak annyit sajnálok, hogy nem tudtam egy harmadik státuszt beletenni: "elérhető csak az ismerőseim számára". Ehhez az kellene, hogy tudja az alkalmazás a viewer-ről, hogy az owner ismerőse-e (barátja).
Ez az alapvető funkció egyelőre hiányzik az OpenSocial-ból, és csak egy csúnya workaround-al lehetne megoldani: le kell kérdezni az összes ismerőst és megnézni, hogy az owner benne van-e. Ez viszont túl sok http lekérést eredményezne, hiszen lehet, hogy az owner csak a 300-adik a sorban (ha legalább 300 ismerős felvette már az app-ot...).
Majd meglátjuk mi lesz belőle, remélem sokan fogják használni.
@gazs Igazad van, de mi lenne jó helyette? Szerintem ezt szokták használni inkább: "A beszélgetés tartama alatt ne menj el erről a weboldalról..." Csak nagyon ronda.
iMect means internet, media and other cool things. We're a small company located in Hungary. There is a big footer on every page where you can discover what we do and what happens with us.
Az iMect jelentése: internet, média és egyéb király dolgok. Egy kis magyar cég vagyunk. Minden oldalon van egy nagy lábléc, ahol felfedezheted, hogy mivel foglalkozunk.