aboutsummaryrefslogtreecommitdiffstats
path: root/python/examples/pam_demo/demo.py
blob: e00914dd8af373b4b8454d5510a0598a42bba52a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from gevent.monkey import patch_all
patch_all()

import sys
from Pubnub import Pubnub
import random
import json

rand = str(random.randint(1,99999999))

def get_unique(s):
	return 'str-' + rand + '-' + s

# public channel
channel_public = get_unique("channel_public")

# server auth key
server_auth_token = get_unique("server_auth_token")

#client auth key
client_auth_token = get_unique("client_auth_token")

#client uuid
client_uuid = get_unique("client_uuid")

#server uuid
server_uuid = get_unique("server_uuid")


#init server object
server = Pubnub(publish_key="pam", subscribe_key="pam", secret_key="pam", auth_key=server_auth_token, uuid=server_uuid)

#init client object
client = Pubnub(publish_key="pam", subscribe_key="pam", auth_key=client_auth_token, uuid=client_uuid)

# Grant permission to server auth keys
print(server.grant(channel=channel_public, auth_key=server_auth_token, read=True, write=True))
print(server.grant(channel=channel_public + '-pnpres', auth_key=server_auth_token, read=True, write=True))

# Grant permission to client auth keys
print(server.grant(channel=channel_public, auth_key=client_auth_token, read=True, write=False))
print(server.grant(channel=channel_public + '-pnpres', auth_key=client_auth_token, read=True, write=False))



def _server_callback(message, channel):
	print(message)

def _error_callback(error):
	print(error)

#server subscribes to public channel
server.subscribe(channels=channel_public, callback=_server_callback, error=_error_callback)



def _server_presence_callback(message, channel):
	print message
	if 'action' in message:
		if message['action'] == 'join' and message['uuid'] == client_uuid:
			print "Only I can see that client with UUID " + message['uuid'] + " has a state of " + json.dumps(message['data'])

# server subscribes to presence events on public channel 
server.presence(channel=channel_public, callback=_server_presence_callback, error=_error_callback)




def _client_callback(channel, message):
	print(message)

# client subscribes to public channel
client.subscribe(channels=channel_public, state={ "myKey" : get_unique("foo")}, callback=_client_callback, error=_error_callback)