XMPP - Blit
Transcription
XMPP - Blit
XMPP XMPP mehr als ein Instant-Messaging Protokoll Arne König, Günther Nieß 01.11.2008 XMPP 1 Instant Messaging 2 XMPP Anwendungen 3 XMPP im Detail 4 mit XMPP entwickeln 5 Spielen mit XMPP XMPP Instant Messaging Instant Messaging Übersicht Echtzeitkommunikation (Chatten) Client-Server basiert Präsenzinformationen der Freunde einsehbar viele bieten zusätzliche Funktionen an Video- und Telefonkonferenzen Dateiübertragungen oder spielen wichtige Vertreter Skype ICQ IBM Lotus Sametime Yahoo Messenger MSN XMPP XMPP Instant Messaging Instant Messaging Übersicht Echtzeitkommunikation (Chatten) Client-Server basiert Präsenzinformationen der Freunde einsehbar viele bieten zusätzliche Funktionen an Video- und Telefonkonferenzen Dateiübertragungen oder spielen wichtige Vertreter Skype ICQ IBM Lotus Sametime Yahoo Messenger MSN XMPP XMPP XMPP Anwendungen XMPP-Chat-Clients Multi-Protokoll-Clients Adium BitlBeem CenterIM Empathy Finch iChat reine XMPP-Clients Bombus Coccinella Exodus Gajim GNU Freetalk imov Instantbird Kopete meebo Miranda Octrotalk Pidgin Smaper ... Google Talk Gossip JAJC JabberMixClient Lampiro Pandion Psi SamePlace Spark Trillian Pro Tkabber ... XMPP XMPP Anwendungen XMPP-Chat-Clients Multi-Protokoll-Clients Adium BitlBeem CenterIM Empathy Finch iChat reine XMPP-Clients Bombus Coccinella Exodus Gajim GNU Freetalk imov Instantbird Kopete meebo Miranda Octrotalk Pidgin Smaper ... Google Talk Gossip JAJC JabberMixClient Lampiro Pandion Psi SamePlace Spark Trillian Pro Tkabber ... XMPP XMPP Anwendungen Kollaboration Whiteboarding gemeinsames Malen auf einem “Whiteboard” Programme: Inkscape, Coccinella Shared Editing gemeinsames Bearbeiten einer Textdatei Programm: Eclipse (siehe Video) 1 Coccinella Screenshot XMPP XMPP Anwendungen Kollaboration Whiteboarding gemeinsames Malen auf einem “Whiteboard” Programme: Inkscape, Coccinella Shared Editing gemeinsames Bearbeiten einer Textdatei Programm: Eclipse (siehe Video) 1 Coccinella Screenshot XMPP XMPP Anwendungen Unterstützung anderer Dienste E-Mail-Benachrichtigung zeitnahe Benachrichtigung zu eingehenden E-Mails angeboten von google, gmx.de, web.de, . . . Info über Webseitenaktualisierung analog zu RSS/ATOM erfordert keine regelmäßigen Abfragen “Feeds” auf Server gespeichert XMPP XMPP Anwendungen Unterstützung anderer Dienste E-Mail-Benachrichtigung zeitnahe Benachrichtigung zu eingehenden E-Mails angeboten von google, gmx.de, web.de, . . . Info über Webseitenaktualisierung analog zu RSS/ATOM erfordert keine regelmäßigen Abfragen “Feeds” auf Server gespeichert XMPP XMPP Anwendungen Weitere Anwendungen Firefox Extension SamePlace Chat in der Sidebar mit Drag and Drop Bilder und Text verschicken OpenID Authentifizierung auf Webseiten mit JavaScript erweiterbar Rechnerüberwachung Monitoringtool mit der Möglichkeit Skripte auszuführen Nagios Mailserver sendxmpp XMPP XMPP Anwendungen Weitere Anwendungen Firefox Extension SamePlace Chat in der Sidebar mit Drag and Drop Bilder und Text verschicken OpenID Authentifizierung auf Webseiten mit JavaScript erweiterbar Rechnerüberwachung Monitoringtool mit der Möglichkeit Skripte auszuführen Nagios Mailserver sendxmpp XMPP XMPP im Detail XMPP im Detail XMPP ist erweiterbar basiert auf XML Erweiterungen bauen aufeinander auf XMPP ist offen offene Spezifizierung keine Lizenzgebühren oder Beschränkungen dezentrales Netz XMPP ist vielseitig anwendbar drei Nachrichtentypen (Messages, Info/Query, Presence) XMPP XMPP im Detail XMPP im Detail XMPP ist erweiterbar basiert auf XML Erweiterungen bauen aufeinander auf XMPP ist offen offene Spezifizierung keine Lizenzgebühren oder Beschränkungen dezentrales Netz XMPP ist vielseitig anwendbar drei Nachrichtentypen (Messages, Info/Query, Presence) XMPP XMPP im Detail XMPP im Detail XMPP ist erweiterbar basiert auf XML Erweiterungen bauen aufeinander auf XMPP ist offen offene Spezifizierung keine Lizenzgebühren oder Beschränkungen dezentrales Netz XMPP ist vielseitig anwendbar drei Nachrichtentypen (Messages, Info/Query, Presence) XMPP mit XMPP entwickeln XMPP im Detail XMPP ist einfach zu implementieren lesbar durch XML eine Reihe von Bibliotheken verfügbar für C, C++, Java, JavaScript, Python, Ruby, . . . Beispiel: Echo-Bot XMPP mit XMPP entwickeln XMPP Code-Beispiel i m p o r t pyxmpp from pyxmpp . j a b b e r . c l i e n t i m p o r t J a b b e r C l i e n t c l a s s EchoBot ( J a b b e r C l i e n t ) : init ( s e l f , j i d , passwd ) : def t l s = pyxmpp . s t r e a m t l s . T L S S e t t i n g s ( r e q u i r e=True , v e r i f y p e e r =F a l s e ) JabberClient . init ( s e l f , pyxmpp . j i d . JID ( j i d ) , passwd , t l s s e t t i n g s =t l s , a u t h m e t h o d s =[” s a s l : PLAIN” ] ) def message ( s e l f , s t a n z a ) : i f s t a n z a . g e t t y p e ( ) == ” c h a t ” and s t a n z a . g e t b o d y ( ) != None : m = pyxmpp . m e s s a g e . Message ( s t a n z a , t o j i d =s t a n z a . g e t f r o m ( ) , f r o m j i d=s t a n z a . g e t t o ( ) ) s e l f . s t r e a m . s e n d (m) def s e s s i o n s t a r t e d ( s e l f ) : JabberClient . session started ( s e l f ) s e l f . stream . s e t m e s s a g e h a n d l e r ( ” normal ” , s e l f . message ) b o t = EchoBot ( ” f r i i s @ j a b b e r . o r g / T e s t ” , ”∗∗∗∗∗∗” ) bot . connect ( ) try : while 1 : bot . loop (1) except K e y b o a r d I n t e r r u p t : bot . d i s c o n n e c t ( ) XMPP Spielen mit XMPP Spielen mit XMPP Motivation jeder mag Spiele XMPP fehlte generische Spiele-Erweiterung im Rahmen eines Uni-Projekts entstanden Entstehung Entwurf für Spiele-Erweiterung bereits vorhanden bedurfte etwas Überarbeitung erste Erweiterung “Instant Gaming” jetzt “Multi-User Gaming” für serverbasierte Spiele XMPP Spielen mit XMPP Spielen mit XMPP Motivation jeder mag Spiele XMPP fehlte generische Spiele-Erweiterung im Rahmen eines Uni-Projekts entstanden Entstehung Entwurf für Spiele-Erweiterung bereits vorhanden bedurfte etwas Überarbeitung erste Erweiterung “Instant Gaming” jetzt “Multi-User Gaming” für serverbasierte Spiele XMPP Spielen mit XMPP Spiele-Protokolle Instant Gaming Service Discovery Einladung Spielablauf Speichern und Laden Multi-User Gaming an Multi-User Chat angelehnt Züge werden validiert Verwaltung XMPP Spielen mit XMPP Spiele-Protokolle Instant Gaming Service Discovery Einladung Spielablauf Speichern und Laden Multi-User Gaming an Multi-User Chat angelehnt Züge werden validiert Verwaltung XMPP Spielen mit XMPP Spiele-Implementierung Serverimplementierung für Openfire Plugins in Java, Groovy, Clojure, Jython, ... Client als Pidgin-Plugin Plugins in C, Vala, Perl, und Mono Spiele sind eigene Plugins Wir suchen Spieleentwickler! XMPP Spielen mit XMPP Demo XMPP Spielen mit XMPP Links Spielen in Pidgin Pidgin Games http://pidgin-games.sf.net/ Proto-XEP Instant Gaming Proto-XEP Multi-User Gaming XMPP XMPP Standards Foundation XMPP Bibliotheken XMPP Server Anwendungen Cola: Real-Time Shared Editing in Eclipse