hjerteslag api: ved hjælp af hjerteslag i et stik af

, hjerteslag api: ved hjælp af hjerteslag i et stik af,,,,, andel,,,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i denne forelæsning, vil vi skabe en enkelt stik af, som anvender hjerteslag api - grænseflade.vores stik af vil alarmere logget på brugere via et brøl som meddelelse, når en anden bruger logger på eller uden for stedet.,, da denne lektion er centreret om hjerteslag api, vil jeg overlade detaljerne om at skabe det stik af header eller fil struktur: det stik af, er meget enkel, og man kan undersøge kildekode fuldt ud på dette github register., bruger anses for "logget ind", når de ind - og har været aktiv inden for de sidste 24 timer.hvis en bruger logger ud eller ikke er aktive i 24 timer, vil de blive anset for at være offline.- vi holder øje med brugerens "online" status og sidste aktive timestamp for at hjælpe afgøre, hvem der er i øjeblikket på nettet.,, skovning og skovhugst, først skal vi skabe et par opgaver koblet til, wp_login, og wp_logout, hooks.disse skal udløses, når en bruger logger på /af wordpress.når en bruger logger på, vi skal ajourføre deres logbog i status (opbevaret som bruger meta -) "ægte" og ajourføre deres sidste aktive klokkeslættet., funktion whoisonline_logged_in ($brugernavn, $bruger) (update_user_meta ($bruger - > id, whoisonline_is_online, sande); update_user_meta ($bruger - og gt; id, whoisonline_last_active, time())} add_action ('wp_login "," whoisonline_logged_in, 10, 2), når en bruger logger ud, vi skal ajourføre deres online status til falske:, funktion whoisonline_logged_out() ($user_id = get_current_user_id(); update_user_meta ($user_id, whoisonline_is_online, falsk)} add_action (' wp_logout "," whoisonline_logged_out "), som er online?nu, lad os skabe en funktion, som vender tilbage til en bred vifte af brugernavne af aktive brugere, indekseret af brugernavn. vi bruger den, get_users(), funktion at søge alle de brugere, der har været aktive i de sidste 24 timer (ved hjælp af den, whoisonline_last_active, meta - nøgle). vi vil så kassér alle brugere, der har logget ud af kontrol af, whoisonline_is_online, bruger - /meta - data, funktion who_is_online ($args = array()) (//komme brugerne aktivt i 24 timer, $args = wp_parse_args ($args, system ('meta_key = > whoisonline_last_active,'meta_value = > time() - 24 * 60 * 60,'meta_compare » = > > ",'count_total = > falske) $brugere = get_users ($args); //indlede array $online_users = array(); for hvert ($brugere som $bruger) (hvis (!get_user_meta ($bruger - > id, whoisonline_is_online, sande) fortsætte. $online_users [$bruger - > id] = $bruger - > user_login;} tilbage $online_users;}, forberedelse af hjerteslag api, før vi beskæftiger os med den client-side del af heaertbeat api - lad os aftale med serveren er svar på en anmodning om, hvem der er online.som var dækket i del 1 i denne serie, vi får på filteret, heartbeat_received, vi behøver ikke at udløse den loggede ud af brugerne vil ikke bruge den, heartbeat_nopriv_received, filter). vi skal ajourføre de nuværende brugerens aktivitet ikrafttrædelsestidspunkt, og sikre deres status er fastsat til online ".bagefter skal vi kontrollere, at en anmodning om, hvem der er online data har indgivet efter den, hvem er online, nøgle (som vi kan bruge senere), i fik $data. hvis det er, vil vi reagere med en række logget på brugere af form:, system ([en brugeridentitet] = > [bruger log i]), som er vendt tilbage fra who_is_online(),., funktion whoisonline_check_who_is_online ($på $data, $screen_id) (//ajourføring af brugerens aktivitet $user_id = get_current_user_id(); update_user_meta ($user_id, whoisonline_last_active, time()); update_user_meta ($user_id, "whoisonline_is_online, sande); //se, om" hvem? "er blevet anmodet om.tom ($data ['who-is-online '])) (//lægger data sendes $svar ['whoisonline'] = who_is_online();} tilbage $svar;} add_filter ('heartbeat_received "," whoisonline_check_who_is_online, 10, 3); add_filter (' heartbeat_received "," whoisonline_check_who_is_online, 10, 3),, t. api, nu skabe javascript fil, who-is-online.js, fil i kernen i din stik af mappe.nedenfor er konturen af sagen. vi indlede vores globale variabel, whoisonline,., whoisonline.online, og whoisonline.onlineprev, er både "foreningslivet arrays (strengt taget i form af javascript, de er objekter) brugere logins, indekseret af bruger - id – svarende til de brugere, der er" online "på den nuværende /tidligere slog.det anvendes til at bestemme, når brugeren har logget ind eller ud. vi så indlede vores anmodning om oplysninger om, hvem der er online, wp.heartbeat.enqueue og lytte til reaktionen fra bindende en callback til tilfælde, t. tik. whoisonline,.det bør vi undersøge for oplysninger, der indberettes af server, foretage de nødvendige foranstaltninger og sikre, at vores anmodning om oplysninger er placeret i kø til næste bank. //indledning af variabler, var whoisonline = (online: falsk, onlineprev: falske}; jquery (dokument). klar (function() (//sæt indledende slå til hurtigt - for demonstrative formål.wp. puls. interval (»fast«); //enqueue er data, wp. hjerteslag. enqueue ("hvem er online, whoisonline, falske); jquery (dokument). (" hjerteslag tik. whoisonline, funktion (begivenhed, data, textstatus, jqxhr) (hvis (data. hasownproperty ('whoisonline')) (//gennemføre aktioner med returnerede data) //i vores eksempel, vi ønsker at lægge data for det næste slag.//det måske ikke i tilfældet i alle ansøgninger: eneste kø data, når det er nødvendigt.wp. hjerteslag. enqueue ("hvem er online, whoisonline, falske)})}), lad os nu udfylder logikken i vores, heartbeat-tick.whoisonline, callback.når oplysningerne er modtaget fra serveren vi først kontrollere, at det indeholder en række logget på brugere (som vil blive givet af nøglen "whoisonline"), ved at kontrollere, data. hasownproperty ('whoisonline ").-,, ajourføre, whoisonline.onlineprev, afspejler, der var online på det sidste slag, og whoisonline.online, afspejler, der er online på det nuværende beat. tjek for bruger - id, der optræder i, whoisonline. online, men er ikke i whoisonline. onlineprev,.disse brugere har logget ind. tjek for brugernavne, der optræder i, whoisonline. onlineprev,, men er ikke i whoisonline. online.disse brugere har logget ud. er det færdige javascript fil og ligner:, var whoisonline = (online: falsk, onlineprev: falske}; jquery (dokument). klar (function() (//sæt indledende slå til hurtigt wp. puls. interval (»fast«); //enqueue er data, wp. puls. enqueue ("hvem er online, whoisonline, falske); jquery (dokument). (" hjerteslag tik. whoisonline, funktion (begivenhed, data, textstatus, jqxhr) (hvis (data. hasownproperty ('whoisonline')) (hvis (whoisonline.online = = = falske) (//hvis har ladt siger ikke noget...whoisonline.online = data.whoisonline;} whoisonline.onlineprev = whoisonline.online



Previous:
Next Page: