ved hjælp af node.js og websockets til at bygge en chat - service

ved hjælp af node.js og websockets til at bygge en chat - service,,,,, 30,,,,,,,, 47,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, node.js og websockets er den perfekte kombination at skrive meget hurtigt, lag - fri ansøgninger, som kan sende oplysninger til et stort antal kunder.så hvorfor starter vi ikke lære om disse to emner ved at bygge en snak.vi vil se, hvordan til at installere node.js pakker, tjene en statisk side til kunden med en grundlæggende webserver, og få socket.io at kommunikere med kunden,.,,,, hvorfor vælge node.js og socket.io?,,,, så hvorfor bruge denne kombination?der er mange platforme, som kan tage en snak anvendelse, men ved at vælge node.js, vi behøver ikke at lære et helt andet sprog, er det bare javascript, men server-side., node.js er en platform, bygget på krom er javascript runtime at gøre opbygningen af ansøgninger i javascript, der kører på serveren, rolig.node.js bruger en event - driven, ikke - blokering i /o model, der gør det perfekt til bygning af tidstro apps. flere og flere node.js ansøgninger bliver skrevet med tidstro kommunikation i tankerne.en berømt eksempel er browserquest fra mozilla, en mmorpg skrevet i node.js, hvis kildekode er blevet frigivet af github., node.js kommer med en indbygget pakke manager: new public management.vi vil bruge det til at installere pakker, som vil bidrage til at fremskynde vores ansøgning udvikling. vi vil bruge tre pakker for denne lektion: jade, udtrykke og stik. io., socket.io: node.js websockets stik af, det vigtigste element i vores anvendelse er tidstro kommunikation mellem kunden og serveren, html5. der websockets, men det er langt fra at blive støttet af alle brugere, så vi har brug for backup løsning. socket.io er vores backup løsning: det vil prøve websocket kompatibilitet og, hvis det er ikke støttede det bruger adobe flash, alex, eller en iframe. endelig støtter den meget store browsere:,, internet explorer 5.5 + safari 3 + 4 + google krom, firefox 3 +, opera 10.61 +, iphone safari, ipad safari, androide webkit, webos webkit, det giver også meget let funktioner til at kommunikere mellem - og kunden, på begge sider. lad os begynde med at installere de tre pakker, vi skal installere vor afhængighed.,,, new public management giver os mulighed for at installere pakker meget hurtigt med en linje, så først gå til dit register og har new public management downloade den nødvendige pakker:, new public management installere udtrykke jade socket.io,,,, så kan vi begynde at opbygge vores server-side registeransvarlige at tjene den vigtigste side. vi skal redde alle server-side kode til en "server. j 'er", som gennemføres af fil knudepunkt. det, til en fælles statiske side,,,, at tjene vores statiske side vil vi bruge express, en pakke, som forenkler hele server-side side sende proces. så lad os optage denne pakke ind i vores project - og start - serveren:, var udtryk for = kræver ('express), app = express. createserver();, næste, er vi nødt til at forme udtryk for at tjene den side af balletkompagniet synspunkter med jade blive installeret motor, som vi tidligere. udtrykke bruger en layout fil af misligholdelse, men vi har ikke brug for det, fordi vi vil kun være én side, så vi i stedet vil deaktivere den. udtrykke kan også tjene et statisk repertoire til kunden som et klassisk webserver, så sender vi en "offentlig" folder, som indeholder alle vores javascript, css og image filer. app. sæt ('views, __dirname + /synspunkter '); ca. sæt ('view motor, jade'); ca. sæt ("mening muligheder", (layout: falske}); ca. konfigurere (function() (app. brug (express. statisk (__dirname + /- offentligt)}), næste lads skabe to mapper inde i vores projekt folder, der hedder "offentlige", og "holdninger", nu er vi bare nødt til at forme udtryk for at tjene en "hjem. -" - sagen, som vi vil skabe et øjeblik, og så sige at lytte til en bestemt havn, jeg vil bruge. havn, 3000, men du kan bruge alle de foretrækker. app. kom ("/" funktion (req, res) (res.render ('home. jade)}); ca. hør (3), at skabe jade skabelon side,,,, node.js anvendelser blive motorer for at tjene websider.det er nyttigt at sende dynamiske sider og at bygge dem hurtigere. i denne forelæsning, vil vi bruge jade.dens syntaks er meget klart, og det støtter alt, hvad vi behøver. "- en højtydende blive motor stærkt påvirket af haml og gennemføres med javascript for node." nu, jeg vil ikke gå i detaljer med jade, hvis du har brug for mere hjælp, du kan finde meget velskrevet dokumentation om sin github repo. jade konfiguration, vi installerede jade tidligere, men vi er nødt til at medtage den i vores server.js, fil, som vi gjorde for express. pr. konvention, inkluderer vi vores biblioteker på toppen af vores fil at bruge dem senere, uden at kontrollere, om de allerede er omfattet.anbring følgende kode på toppen af din "server. er" fil:, var jade = kræver ('jade "), og det fuldender vores jade konfiguration.express er allerede narret til at bruge jade med vores opfattelse af filer, at sende en html reaktion, vi har bare brug for at skabe den fil, skabe vores hjemmeside, hvis vi begynder vores server nu det vil sove, fordi vi beder vores app til at sende en besked, som eksisterer ikke endnu. vi kommer ikke til at skabe en fuld figurerede side, bare noget grundlæggende, der har en titel, en beholder til meddelelser, en tekst, en sende knap, og en bruger tæller., gå videre og skabe et "hjem. -", side i "holdninger" mappe med følgende kode:, doctype 5 http: //indbygger afsnit snak manuskript (src ='https: //ajax. googleapis. kom /ajax /libs /jquery /1.7.2 /jquery. min.js) manuskript (src = "/port. io /port. io. j 'er") manuskript (src = "script. j' er") organ, div.container header h1 - chat anvendelse med node.js og socket.io input (type ='text ')&#pseudoinput knap&#pseudoset sæt pseudo - div&#chatentries div&#chatcontrols input (type ='text')&#messageinput knap&#forelægge sende, "jade handler om mærke", jade sprog er alt om aftryk.som du kan se, har vi ikke brug for at lukke vores beholdere, indenting børn af forældre beholder er nok. vi bruger også en periode. "", og et pund tegn, "#", til at angive den klasse eller id af det element, som i css fil. vi også i forbindelse med tre manuskripter på toppen af den fil.den første er jquery fra google cdn, så har vi socket.io manuskript, der betjenes automatisk af pakken, og endelig en "manus. det er" fil, der vil holde alle vores skik er funktioner.,, socket.io server side konfiguration,,,, socket.io er tilfælde baseret på, ligesom node.det har til formål at gøre tidstro system muligt i hver browser og mobile enhed, at udviske grænserne mellem de forskellige transport mekanismer.det er mig fri, direkte og 100% javascript. ligesom de andre moduler, er vi nødt til at medtage den i vores server.js, fil.vi vil også kæde på vores udtrykkelige server for at lytte til forbindelser fra samme adresse og havn, var io = kræver ('socket. io). hør (app); den første begivenhed, som vi vil bruge den forbindelse begivenhed.det er fyret, da en klient prøver at forbinde til server. socket.io skaber en ny sokkel, som vi vil bruge til at modtage eller sende beskeder til kunden. lad os begynde med starter den forbindelse:, io. muffer. ('connection, funktion (sokkel) (//andre begivenheder.}); denne funktion kræver to argumenter, for det første den begivenhed, og den anden er den callback funktion med sokkel objekt. ved hjælp af kode sådan her, vi kan skabe nye begivenheder, om kunden og på server med socket.io.vi vil sætte "pseudo -" begivenhed og den "budskab" begivenhed næste. for at gøre dette, det er simpelt, vi bruger bare det samme syntaks, men denne gang med vores, stikpropper, objekt og ikke med "io. muffer", med et "s") objekt.dette giver os mulighed for at kommunikere med en klient. så i vores forbindelse funktion, lad os tilføje i "pseudo -" event - kode, stik. ('setpseudo, funktion (data) (sokkel. sæt ('pseudo, data)}), callback funktion tager et argument, det er data fra kunden, og i vores tilfælde indeholder pseudo.med ",", funktion, vi tildeler en variabel til stikkontakt.det første argument er navnet på denne variabel, og den anden er den værdi, vi er nødt til at tilføje, i koden for "budskab" begivenhed.det bliver brugerens pseudo -, radio - og tv - et system til alle kunder, der indeholder det budskab, vi har modtaget, samt brugernes pseudo - - og komme det i vores konsol., stik. ('message, funktion (meddelelse) (sokkel. kom ('pseudo, funktion (fejl, navn) (var - data = {"budskab": besked, pseudo -: navn}, stik. udsendelse. udsender ('message, data); konsol. log ("bruger" + navn + "send dette:" + meddelelse))))); det fuldender vores server-side konfiguration.hvis du vil, kan du gå videre og anvende andre arrangementer for at tilføje nye elementer til snak., det gode ved socket.io, er, at vi ikke behøver at bekymre sig om håndtering af klient slukning.når man kobler, socket.io, ikke længere modtage svar på "hjerte" budskaber og vil deaktivere den samling, der er forbundet med kunden.hvis det var en midlertidig frakobling, kunden vil udvikle og fortsætte mødet.,, socket.io klient side konfiguration, nu hvor vores server er konfigureret til at klare budskaber, vi har brug for en kunde til at sende dem, client-side af socket.io næsten er den samme som den server-side.det virker også med skik hændelser, og vi vil skabe de samme som på serveren., for det første, at skabe et "manus. det er" fil i offentlige, mappe.vi vil opbevare alle vores funktioner i. må vi først begynde socket.io forbindelse mellem kunden og server.de skal opbevares i en variabel, som vi vil bruge senere til at sende eller modtage data.når forbindelsen bliver ikke vedtaget nogen argumenter, vil det automatisk forbindelse til serveren, der vil tjene side, var sokkel = io. connect();, lad os skabe en hjælper, funktioner, som vi får brug for det senere.den første er en simpel opgave at tilføje et budskab til skærmen med brugerens pseudo -., funktion addmessage (msg pseudo) ($("# chatentries"). både (< div klasse = "budskab" > < p > + pseudo - + «: + 2 + < /p > < /div > ')), og det hjælper anvender både funktion fra jquery at tilføje en, div. i slutningen af det,&#chatentries div. nu skal vi skrive en opgave, som vi kan kalde når vi ønsker at sende en ny besked., funktion sentmessage() (hvis ($('&#messageinput '). val()!= ") (sokkel. udsender ('message, $('# messageinput'). val()); addmessage ($('# messageinput'). val()," mig ", nye date(). toisostring(), sande); $('# messageinput). val (');), det første, vi kontrollerer, at vores textarea ikke er tomme, så sender vi en pakke, der hedder" budskab ", til server, som indeholder det budskab, tekst, vi skriver det på skærmen med vores" addmessage ", funktion, og vi skal fjerne alle teksten fra textarea. nu, hvor kunden åbner den side, vi skal sætte brugeren er pseudo første.denne funktion vil sende en pseudo - til server og vise textarea og forelægge knap., funktion setpseudo() (hvis ($("# pseudoinput"). val()!= ") (sokkel. udsender ('setpseudo, $("&#pseudoinput "). val()); $('# chatcontrols'). show(). $('&#pseudoinput '). hide(). $('&#pseudoset '). hide();}}, og vi skjule pseudo - fastsættelse af kontrol når det er sendt til server. nu, ligesom vi gjorde i server-side, er vi nødt til at sikre, at vi kan modtage nye meddelelser, og denne gang vil vi vise dem på skærmen.vi bruger samme syntaks, men denne gang, vi kalder den, "addmessage", funktion, stik. ('message, funktion (data) (addmessage (data ['message "data ['pseudo ']);}), ligesom med vores server konfiguration, den pakke, der er sendt til kunden er et system, der indeholder meddelelsen og de pseudo.så vi kaldte vores "addmessage" funktion går i meddelelsen og pseudo -, som vi uddrag af de modtagne data. vi skal lige tilføje initialization funktion, som er fyret, når den side er fuldt lastet. $(function() {$("# chatcontrols"). hide(). $("# pseudoset"). klik (function() {setpseudo()}); $("# fremsætte"). klik (function() {sentmessage().})}), første, vi gemmer den snak kontrol før pseudo - er sat, og så vi to klik lyttere, som lytter til klik på vores to forelægge knapper.for det første at pseudo - og den anden er for beskeder., og det var vores client-side manuskript.,, at sige, at vi nu har en snak.at begynde på det, bare løb efter ordre:, node servere. er i terminalen, du burde få en besked fra socket.io siger, at serveren er startet.se side til, 127.0.0.1:3000 (eller den havn, du valgte tidligere).,,,, design er meget grundlæggende, men du kunne tilføje en stylesheet med css3 overgangsperioder for indgående meddelelser, html5 lyder eller bootstrap fra twitter. som du kan se, - - og klient manuskripter er temmelig lignende: det er kraften af node.js.du kan bygge en ansøgning, uden at skrive to gange. og endelig, måske har du lagt mærke til, at det kun var 25 linier i vores, server.js, sag at skabe et velfungerende, at app, med en utrolig præstation.det er meget kort, men det fungerer også godt. nu, hvis du er interesseret, jeg har skabt en bedre snak driftbremsning med en flot design, sammen med nogle yderligere elementer.det er arrangeret på nodester og kildekoden er på github. her er en forsmag på det,.,,,, tak fordi du læste.

1
2
7
3
6
4
5



Previous:
Next Page: