Metadata-Version: 1.0
Name: juggernaut
Version: 0.2
Summary: Client library for juggernaut.
Home-page: http://github.com/mitsuhiko/python-juggernaut
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
License: UNKNOWN
Description: 
        juggernaut
        ~~~~~~~~~~
        
        Dead simple Python library that connects to a juggernaut via
        redis.  It also provides a very basic roster implementation that
        can be used as a daemon process to manage online users.
        
        Basic usage
        -----------
        
        How to send a message to all subscribers of a channel::
        
            from juggernaut import Juggernaut
            jug = Juggernaut()
            jug.publish('channel', {'message': 'Hello World!'})
        
        Connection Events
        -----------------
        
        Juggernaut also allows you to subscribe to events (new subscription,
        unsubscribe event) so that you can respond to users going online
        and offline::
        
            from juggernaut import Juggernaut
            jug = Juggernaut()
            for event, data in jug.subscribe_listen():
                if event == 'subscribe':
                    ...
                elif event == 'unsubscribe':
                    ...
        
        Since this is quite common this library also implements a Roster
        that can group multiple connections to the same user.  For grouping
        this it uses a key in the meta part of the message.  The default
        is ``user_id`` in the meta object.
        
        Example usage::
        
            from juggernaut import Juggernaut, RedisRoster
            jug = Juggernaut()
            roster = RedisRoster(jug)
            roster.run()
        
        By default it keeps the number of online users in redis so that you
        can use the roster class to see if users are online::
        
            >>> roster.get_online_users()
            [42, 23]
            >>> roster.is_user_online(42)
            True
            >>> roster.is_user_online(99)
            False
        
        If you want to respond to users signing in and out you need to
        override the `on_signed_in` and `on_signed_out` methods::
        
            class MyRoster(RedisRoster):
                def on_signed_in(self, user_id):
                    print 'User signed in', user_id
                def on_signed_out(self, user_id):
                    print 'User signed out', user_id
        
        You can for instance use juggernaut to broadcast that to other
        users that signed in.
        
        
        :copyright: (c) 2011 by Armin Ronacher.
        :license: BSD, see LICENSE for more details.
Platform: UNKNOWN
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
