{"action":"closed","issue":{"url":"https://api.github.com/repos/ably/docs/issues/176","repository_url":"https://api.github.com/repos/ably/docs","labels_url":"https://api.github.com/repos/ably/docs/issues/176/labels{/name}","comments_url":"https://api.github.com/repos/ably/docs/issues/176/comments","events_url":"https://api.github.com/repos/ably/docs/issues/176/events","html_url":"https://github.com/ably/docs/issues/176","id":182096647,"number":176,"title":"Presence tutorial","user":{"login":"mattheworiordan","id":43789,"avatar_url":"https://avatars.githubusercontent.com/u/43789?v=3","gravatar_id":"","url":"https://api.github.com/users/mattheworiordan","html_url":"https://github.com/mattheworiordan","followers_url":"https://api.github.com/users/mattheworiordan/followers","following_url":"https://api.github.com/users/mattheworiordan/following{/other_user}","gists_url":"https://api.github.com/users/mattheworiordan/gists{/gist_id}","starred_url":"https://api.github.com/users/mattheworiordan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattheworiordan/subscriptions","organizations_url":"https://api.github.com/users/mattheworiordan/orgs","repos_url":"https://api.github.com/users/mattheworiordan/repos","events_url":"https://api.github.com/users/mattheworiordan/events{/privacy}","received_events_url":"https://api.github.com/users/mattheworiordan/received_events","type":"User","site_admin":false},"labels":[{"id":22504384,"url":"https://api.github.com/repos/ably/docs/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"closed","locked":false,"assignee":{"login":"SimonWoolf","id":5908687,"avatar_url":"https://avatars.githubusercontent.com/u/5908687?v=3","gravatar_id":"","url":"https://api.github.com/users/SimonWoolf","html_url":"https://github.com/SimonWoolf","followers_url":"https://api.github.com/users/SimonWoolf/followers","following_url":"https://api.github.com/users/SimonWoolf/following{/other_user}","gists_url":"https://api.github.com/users/SimonWoolf/gists{/gist_id}","starred_url":"https://api.github.com/users/SimonWoolf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SimonWoolf/subscriptions","organizations_url":"https://api.github.com/users/SimonWoolf/orgs","repos_url":"https://api.github.com/users/SimonWoolf/repos","events_url":"https://api.github.com/users/SimonWoolf/events{/privacy}","received_events_url":"https://api.github.com/users/SimonWoolf/received_events","type":"User","site_admin":false},"assignees":[{"login":"SimonWoolf","id":5908687,"avatar_url":"https://avatars.githubusercontent.com/u/5908687?v=3","gravatar_id":"","url":"https://api.github.com/users/SimonWoolf","html_url":"https://github.com/SimonWoolf","followers_url":"https://api.github.com/users/SimonWoolf/followers","following_url":"https://api.github.com/users/SimonWoolf/following{/other_user}","gists_url":"https://api.github.com/users/SimonWoolf/gists{/gist_id}","starred_url":"https://api.github.com/users/SimonWoolf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SimonWoolf/subscriptions","organizations_url":"https://api.github.com/users/SimonWoolf/orgs","repos_url":"https://api.github.com/users/SimonWoolf/repos","events_url":"https://api.github.com/users/SimonWoolf/events{/privacy}","received_events_url":"https://api.github.com/users/SimonWoolf/received_events","type":"User","site_admin":false}],"milestone":null,"comments":1,"created_at":"2016-10-10T19:32:45Z","updated_at":"2016-11-20T19:55:45Z","closed_at":"2016-11-20T19:55:45Z","body":"@SimonWoolf taking a stab at some ideas for a presence tutorial.\n\nWe need a client-side tutorial (Javascript + optionally Ruby EM if you have time) & a client-server example for (Javascript + Node.js, optionally Javascript + Ruby).\n\nSee https://www.ably.io/tutorials/publish-subscribe#lang-javascript for a client-side related example.\nSee https://www.ably.io/tutorials/token-authentication#lang-nodejs for a client-server related example.\n\nFor the client-side example perhaps we could show:\n- Into - simple explanation of what presence is and how it can be used.\n- Step 1 - Set up (this is a generic partial)\n- Step 2 - Install Ably (generic)\n- Step 3 - Enter channel (let's use a room analogy). Explain that attaching to a channel does not mean you've entered. You need to explicitly enter (avoid any mention of multiple client support, too much info at this stage). We also need to demonstrate at this point that a clientId must be specified. Need to mention explicitly that for this example for simplicity we're assigning a clientId with basic auth, but we don't recommend this in production and should issue a token server-side, with a link to the client-server examples.\n- Step 4 - Get current members - explain this is done following the initial sync on the channel\n- Step 5 - Subscribe to presence changes - explain that you can subscribe to enter, leave, update events. \n- Live demo - I think we should allow people to enter a room, and change their avatar. So they enter their name, choose an avatar, and enter.  They can then leave at any point, or update their avatar.  Nice to have a raw console + nice graphic of the avatars and people in the virtual room (just a div I expect) will do. See http://www.freepik.com/free-vector/black-and-white-avatars_713015.htm for some possible avatars\n\nFor the client-server example perhaps we could show:\n- Into - simple explanation of what presence is and how it can be used.\n- Step 1 - Set up (this is a generic partial)\n- Step 2 - Install Ably on your server (generic)\n- Step 3 - Set up your web server\n- Step 4 - Enter client (don't worry about auth, again just link to the client-server auth example and explain it's not relevant to this example)\n- Step 5 - iFrame with button to get current presence members server-side\n- Step 6 - iFrame with button to get presence member history\n"}}
{"actor":{"display_login":"mattheworiordan"}}