## 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 sys.path.append('../') import datetime from Pubnub import 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()