2014-05-22 10:41:40 -07:00
<!doctype html>
< html >
< head >
< meta charset = "utf-8" >
< meta http-equiv = "X-UA-Compatible" content = "chrome=1" >
2014-05-23 15:12:32 -07:00
< title > Cosmopolite</ title >
2014-05-22 10:41:40 -07:00
< link rel = "stylesheet" href = "stylesheets/styles.css" >
< link rel = "stylesheet" href = "stylesheets/pygment_trac.css" >
</ head >
< body >
< div class = "wrapper" >
< header >
< h1 class = "header" > Cosmopolite</ h1 >
2014-05-25 23:55:42 -07:00
< p class = "header" > Client/server publish/subscribe, presence and key/value storage for AppEngine</ p >
2014-05-22 10:41:40 -07:00
< ul >
< li class = "download" >< a class = "buttons" href = "https://github.com/flamingcowtv/cosmopolite/zipball/master" > Download ZIP</ a ></ li >
< li class = "download" >< a class = "buttons" href = "https://github.com/flamingcowtv/cosmopolite/tarball/master" > Download TAR</ a ></ li >
< li >< a class = "buttons github" href = "https://github.com/flamingcowtv/cosmopolite" > View On GitHub</ a ></ li >
</ ul >
</ header >
< section >
< h1 >
2014-05-22 11:34:33 -07:00
< a name = "cosmopolite" class = "anchor" href = "#cosmopolite" >< span class = "octicon octicon-link" ></ span ></ a > Cosmopolite</ h1 >
2014-05-22 10:41:40 -07:00
2014-05-25 23:55:42 -07:00
< p > Client/server publish/subscribe, presence and key/value storage for < a href = "https://developers.google.com/appengine/" > AppEngine</ a > .</ p >
2014-05-22 10:41:40 -07:00
2014-05-22 11:34:33 -07:00
< h3 > Dig in</ h3 >
< ul >
2014-06-07 23:28:37 -07:00
< li style = "font-weight: bold;" > Read < a href = "overview" > the overview</ a ></ li >
2014-06-04 21:44:18 -07:00
< li style = "font-weight: bold;" > Read < a href = "tutorial" > the tutorial</ a ></ li >
2014-06-03 22:00:40 -07:00
< li style = "font-weight: bold;" > Try out < a href = "https://playground.cosmopolite.org/cosmopolite/static/debug.html" > the playground</ a ></ li >
2014-05-22 11:34:33 -07:00
</ ul >
< h3 > Components</ h3 >
2014-05-22 10:41:40 -07:00
< ul >
2014-05-22 11:08:37 -07:00
< li > A server API built on the < a href = "https://developers.google.com/appengine/docs/python/" > AppEngine Python framework</ a > .</ li >
< li > A browser client library written in JavaScript.</ li >
2014-05-22 11:02:20 -07:00
</ ul >
2014-05-22 11:34:33 -07:00
< h3 > Feature overview</ h3 >
2014-05-22 10:41:40 -07:00
< ul >
2014-05-22 11:08:37 -07:00
< li > Near-realtime notification to subscribers of messages published to a "subject"</ li >
< li > Server-side storage of past messages for replay later to clients</ li >
2014-05-25 23:55:42 -07:00
< li > Ephemeral messages tied to client connection that can be used for presence information</ li >
2014-05-22 11:08:37 -07:00
< li > Client identification persistence via < a href = "http://www.w3schools.com/html/html5_webstorage.asp" > localStorage</ a > tokens or in combination with < a href = "https://developers.google.com/appengine/docs/python/users/" > Google account signin</ a ></ li >
< li > Complex messages supported via transparent < a href = "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON" > JSON</ a > serialization</ li >
< li > Server-side strict ordering of messages</ li >
< li > Client-side message queueing in localStorage and resumption on restart</ li >
< li > Message duplication detection and elimination</ li >
< li >< a href = "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise" > Promise</ a > support for notification of client -> server operation completion</ li >
2014-05-22 10:41:40 -07:00
</ ul >
</ section >
</ div >
2014-05-22 11:10:12 -07:00
< script >
( function ( i , s , o , g , r , a , m ){ i [ 'GoogleAnalyticsObject' ] = r ; i [ r ] = i [ r ] || function (){
( i [ r ]. q = i [ r ]. q || []). push ( arguments )}, i [ r ]. l = 1 * new Date (); a = s . createElement ( o ),
m = s . getElementsByTagName ( o )[ 0 ]; a . async = 1 ; a . src = g ; m . parentNode . insertBefore ( a , m )
})( window , document , 'script' , '//www.google-analytics.com/analytics.js' , 'ga' );
2014-05-22 10:44:03 -07:00
2014-06-07 23:10:54 -07:00
ga ( 'create' , 'UA-37845853-2' , 'auto' );
2014-05-22 11:10:12 -07:00
ga ( 'send' , 'pageview' );
</ script >
2014-05-22 10:41:40 -07:00
</ body >
</ html >