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" >
< script src = "javascripts/scale.fix.js" > < / script >
< meta name = "viewport" content = "width=device-width, initial-scale=1, user-scalable=no" >
< / 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 >
< li style = "font-weight: bold;" > Read < a href = "tutorial.html" > the tutorial< / a > < / li >
2014-05-23 11:47:56 -07:00
< li style = "font-weight: bold;" > Try out < a href = "https://cosmopolite-playground.appspot.com/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-05-22 11:10:12 -07:00
ga('create', 'UA-37845853-2', 'flamingcowtv.github.io');
ga('send', 'pageview');
< / script >
2014-05-22 10:41:40 -07:00
< / body >
< / html >