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