## www.pubnub.com - PubNub Real-time push service in the cloud. # coding=utf8 ## PubNub Real-time Push APIs and Notifications Framework ## Copyright (c) 2010 Stephen Blum ## http://www.pubnub.com/ ## ----------------------------------- ## PubNub 3.1 Real-time Push Cloud API ## ----------------------------------- import sys import datetime from Pubnub import PubnubTwisted as Pubnub from functools import partial from threading import current_thread import threading publish_key = len(sys.argv) > 1 and sys.argv[1] or 'demo' subscribe_key = len(sys.argv) > 2 and sys.argv[2] or 'demo' secret_key = len(sys.argv) > 3 and sys.argv[3] or 'demo' cipher_key = len(sys.argv) > 4 and sys.argv[4] or None ssl_on = len(sys.argv) > 5 and bool(sys.argv[5]) or False ## ----------------------------------------------------------------------- ## Initiate Pubnub State ## ----------------------------------------------------------------------- #pubnub = Pubnub( publish_key, subscribe_key, secret_key, cipher_key, ssl_on ) pubnub = Pubnub(publish_key, subscribe_key, secret_key, ssl_on) crazy = 'hello_world' current = -1 errors = 0 received = 0 ## ----------------------------------------------------------------------- ## Subscribe Example ## ----------------------------------------------------------------------- def message_received(message): print message def check_received(message): global current global errors global received print message print current if message <= current: print 'ERROR' #sys.exit() errors += 1 else: received += 1 print 'active thread count : ', threading.activeCount() print 'errors = ', errors print current_thread().getName(), ' , ', 'received = ', received if received != message: print '********** MISSED **************** ', message - received current = message def connected_test(ch): print 'Connected', ch def connected(ch): pass ''' pubnub.subscribe({ 'channel' : 'abcd1', 'connect' : connected, 'callback' : message_received }) ''' def cb1(): pubnub.subscribe({ 'channel': 'efgh1', 'connect': connected, 'callback': message_received }) def cb2(): pubnub.subscribe({ 'channel': 'dsm-test', 'connect': connected_test, 'callback': check_received }) def cb3(): pubnub.unsubscribe({'channel': 'efgh1'}) def cb4(): pubnub.unsubscribe({'channel': 'abcd1'}) def subscribe(channel): pubnub.subscribe({ 'channel': channel, 'connect': connected, 'callback': message_received }) print threading.activeCount() pubnub.timeout(15, cb1) pubnub.timeout(30, cb2) pubnub.timeout(45, cb3) pubnub.timeout(60, cb4) #''' for x in range(1, 1000): #print x def y(t): subscribe('channel-' + str(t)) def z(t): pubnub.unsubscribe({'channel': 'channel-' + str(t)}) pubnub.timeout(x + 5, partial(y, x)) pubnub.timeout(x + 25, partial(z, x)) x += 10 #''' ''' for x in range(1,1000): def cb(r): print r , ' : ', threading.activeCount() def y(t): pubnub.publish({ 'message' : t, 'callback' : cb, 'channel' : 'dsm-test' }) pubnub.timeout(x + 1, partial(y,x)) x += 1 ''' pubnub.start()