Skip to content

Instantly share code, notes, and snippets.

@ToeJamson
Created September 11, 2015 23:14
Show Gist options
  • Save ToeJamson/3f65df9cbd089cbb9c53 to your computer and use it in GitHub Desktop.
Save ToeJamson/3f65df9cbd089cbb9c53 to your computer and use it in GitHub Desktop.
Advanced Channel Groups: Friend Lists, Status Feed and Presence
// Initialize with UUID (from successful authentication response with backend)
var p = PUBNUB.init({
publish_key: "...",
subscribe_key: "...",
uuid: "0c2340c2-8cc1-4898-8868-444ba77d02d2::web"
});
// Initialize with UUID (from successful authentication response with backend)
var p = PUBNUB.init({
publish_key: "...",
subscribe_key: "...",
uuid: "user-a"
});
// Publish a status message
p.publish({
channel: "ch-user-a-status",
message: { author: "user-a", status: "I am reading about Advanced Channel Groups!", timestamp: Date.now() / 1000 },
callback: function(m) {
console.log("PUB: ", m);
}
});
// Add ch-user-a-present to cg-user-a-friends
p.channel_group_add_channel({
channel_group: "cg-user-a-friends",
channel: "ch-user-a-present",
callback: function(m) {
console.log("CG-Add: ", m);
}
});
// Add ch-user-a-present to cg-user-a-status-feed
p.channel_group_add_channel({
channel_group: "cg-user-a-status-feed",
channel: "ch-user-a-present",
callback: function(m) {
console.log("CG-Add: ", m);
}
});
// ************************************
// * User A and User B become friends
// ************************************
// Add User B to User A's groups: Add ch-user-b-present to cg-user-a-friends
p.channel_group_add_channel({
channel_group: "cg-user-a-friends",
channel: "ch-user-b-present",
callback: function(m) {
console.log("CG-Add: ", m);
}
});
// Add User B to User A's groups: ch-user-b-status to cg-user-a-status-feed
p.channel_group_add_channel({
channel_group: "cg-user-a-status-feed",
channel: "ch-user-b-status",
callback: function(m) {
console.log("CG-Add: ", m);
}
});
// Add User A to User B's groups: Add ch-user-a-present to cg-user-b-friends
p.channel_group_add_channel({
channel_group: "cg-user-b-friends",
channel: "ch-user-a-present",
callback: function(m) {
console.log("CG-Add: ", m);
}
});
// Add User B to User A's groups: ch-user-a-status to cg-user-b-status-feed
p.channel_group_add_channel({
channel_group: "cg-user-b-status-feed",
channel: "ch-user-a-status",
callback: function(m) {
console.log("CG-Add: ", m);
}
});
1 // Get the List of Friends
2 p.channel_group_list_channels({
3 channel_group: "cg-user-a-friends",
4 callback: function(m) {
5 console.log("FRIENDLIST: ", m);
6 }
7 });
8
9 // Which Friends are online right now
10 p.here_now({
11 channel_group: "cg-user-a-friends",
12 callback: function(m) {
13 console.log("ONLINE NOW: ", m);
14 }
15 });
16
17 // Watch Friends come online / go offline
18 p.subscribe({
19 channel_group: "cg-user-a-friends-pnpres",
20 message: function(m,a,b,c) {
21 console.log("FRIEND PRESENCE: ", m,a,b,c);
22 }
23 });
// Get Status Feed Messages
p.subscribe({
channel_group: "cg-user-a-status-feed",
message: function(m,a,b,c) {
console.log("STATUS: ", m,a,b,c);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment