, opbygge et tidstro snak anvendelse med elasticitetsmodul og laravel 5,,,,, 441,,,,,,,, 18,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie kaldet begyndt med modulus.real-time snak med elasticitetsmodul og node.jsbuild tidstro snak anvendelse med elasticitetsmodul og python, sponsoreret indhold, denne støttes efter træk et produkt af relevans for vores læsere, mens vores leder, retningslinjer for at være objektive og uddannelsesmæssige.,, i denne forelæsning, skal jeg vise dig, hvordan man gennemfører en tidstro snak anvendelse med laravel 5, postgresql og pusher.så vi vil anvende denne ansøgning til modulus sammen.,, vi vil bruge laravel 5 til back - end - service, html5 og jquery for simpelt hjælpe anvendelse, postgresql til databasen, og pusher til tidstro kommunikation mellem - og kunder.den overordnede arkitektur vil være sådan her:,,,,, scenario, brugeren åbner snak anvendelse i en browser og giver et kælenavn til at fortsætte snakken., brugeren indtaster en tekst og klik den , sende , button, beskeden, vil blive behandlet af en tjeneste, skrevet med laravel 5, og det vil være opretholdt til databasen. , de ved besked vil blive sendt til presser på, for at udløse en ny besked begivenhed til at sende det budskab til forbundne kunder. de nye budskab vil blive overtaget af kunderne, og at budskab vil fornyes for alle indbyrdes forbundne kunder. , vil vi dække meget nyttige. emner med dette scenario, selv om det er en meget enkel anvendelse. , miljø, forberedelse, laravel projekt fælde, skal installere laravel fførste, så vi kan skrive en chat - service for vores anmodning.vi vil bruge komponist til at installere laravel og dertil hørende pakker let.der henvises til komponist websted for at lære mere om komponist anlæg.efter montering af komponist, åbner en kommandolinje hurtige og løber efter ordre til at installere laravel 5:,,, komponist globale kræver "laravel /installatøren = - 1",,, du vil se produktion som følgende:,,,,,, vi er klar til at skabe en laravel projekt.løb følgende kode til at generere et projekt struktur for snak anvendelse.,,, laravel nye realtimechatlaravel,,, det vil skabe en boilerplate laravel projekt, og du vil se efter mappe struktur:,,,,, database, vores ansøgning vil interagere med en database, og det vil være postgresql.i dette projekt, vil vi bruge elephantsql, som er et selskab, der leverer postgresql som en tjenesteydelse.du kan bruge flere typer database med laravel, som sqlite, mysql, postgresql og sql - server.jeg har valgt postgresql, for når vi anvender vores projekt til elasticitetsmodul, du vil ikke være i stand til at anvende en intern database, som ovennævnte database - typer.jeg foretrækker at bruge en database, som giver det som en tjeneste.elephantsql tillader dig at prøve nogle af de gode elementer i postgresql med en plan. , kan du gå og få en gratis plan fra elephantsql til brug for deres behov.når du er færdig med din højde og database oprettelse, kender du databasens oplysninger som , hostname,, , database, navn, brugernavn, og kodeord. , skriv ned, at oplysninger til brug i laravel for database konfiguration.,, presser, dette selskab leverer en tjenesteydelse til udløsende begivenheder for tidstro meddelelse.du kan gå pusher websted får en.efter vellykket højde og anvendelse oprettelse, vil du være i stand til at få nogle papirer, som app - id, app hemmelige, og , app nøgle.vi vil tale om deres anvendelse i de kommende sektioner.,, nginx, med henblik på at køre et php anvendelse i elasticitetsmodul, er du nødt til at have en webserver konfigureret til at tjene din ansøgning.vi vil anvende følgende nginx konfiguration:,, server (hør 8080; server_name modulus_app_url; root /ville /app /offentlige; indeks. index.php; placering /(try_files $uri $uri //index.php?$query_string;} placering ~). på $(fastcgi_split_path_info ^ (. + \\. folkesundhedsprogrammet) (. +) $; fastcgi_pass unix - /ville /home /php-fpm.sock; fastcgi_param script_filename $document_root $fastcgi_script_name; fastcgi_index index.php; omfatter fastcgi_params;}}, vi har gennemført de nødvendige miljø indstillinger til at fortsætte den udvikling.lad os gå til design.,, projektet fra bunden, model, hvis du nogensinde har brugt en orm ramme før, du vil være meget bekendt med dette emne.i laravel projekter tilgængelige modeller er anbragt i , app /, folder ved misligholdelse.i denne ansøgning, vil vi udføre affald operationer på meddelelser, og det betyder, at vi skal skabe et budskab, model. ,, hvis du ønsker at skabe en model, skaber blot en klasse, der udvider , model, klasse, som er et abstrakt klasse i laravel centrale pakke , oplyse. databasen er veltalende,.skabe filen, message.php under , app /, servietter, har følgende indhold i sagen:,, <?php namespace app; brug belyse ¶ database. sigende. model og klasse besked udvider model (beskyttede $tabel = "meddelelser"), og denne model vil give os mulighed for at udføre flere database i tilknytning hertil, let.for eksempel, da du udføre følgende spørgsmål:,, <?php...besked: all();...? >,, det vil give dig alle de beskeder fra databasen.men hvordan kan det beslutte på bordet navn det vil hente det?det bruger $tabel, værdi i modellen til klasse.når man laver en ny besked, det direkte vil redde din besked model til, beskeder, tabel.vi vil gå i detaljer med modeller, som den registeransvarlige afsnit.,, finansinspektørens, tilsynsførende, er det sted, hvor deres ansøgning opførsel er defineret.vi vil udføre en besked i tilknytning hertil, hvis chatcontroller, findes i vores anvendelse.vi har fire endpoints for vores anvendelse:,,, kom /login: for at gøre indlogningsside, kom /snak,: for at gøre chat - side, få /budskaber: for at opføre de sidste fem beskeder til fremvisning på chat - side, når brugeren først åbner det, post og beskeder - for at redde en ny meddelelse, for at skabe en registeransvarlig, blot skaber en klasse under , app. http. kontrollører, og gør det til en særlig klasse klasse udvide laravel, tilsynsførende, som findes i , app. http. kontrollører.når man anmoder om, /login eller /snak, endepunkt, vil de gøre deres egne modeller i henhold til ressourcer /synspunkter.du kan gøre dette ved at anvende følgende foranstaltninger, klasse chatcontroller udvider registeransvarlige (offentlig funktion getlogin() (afkast på ("login");} offentlig funktion getchat() (afkast på ("snak");} offentlig funktion savemessage() (hvis (anmodning: ajax()) ($data = input: all(). $besked = ny besked. $besked - > forfatter = $data ["forfatter"] $besked - > besked = $data ["budskab"] $besked - > save(); knapper: udløser ('chat "," budskab "['message = > $besked]);}} offentlig funktion listmessages (besked $meddelelse) {tilbage response() - > json ($besked - > orderby (" 'ated_at "," desc ") - > (5) - > get())}}, første og anden aktioner vil gøre særlige sider.den tredje aktion er for at redde beskeder.i denne indsats, den første anmodning type er tjekket.hvis det er en ajax anmodning, det får alle anmodning krop som et overordnet system.dette system anvendes til at forsyne det nyoprettede model besked. ,,,, save(), metode foretages direkte i den model for at redde database.når en ny besked er reddet til databasen med samme budskab, vil blive sendt til pusher, som udløser , en meddelelse, en begivenhed.når du udløser en begivenhed, alle de indbyrdes forbundne kunder vil blive meddelt.med henblik på anvendelse af den , presser, klasse i din laravel projekter, kan du gøre følgende:,, kræver en pusher i pakker via , komponist, kræver vinkla /pusher,., tilføje pusher - pakken, som er , vinkla en pusher. pusherserviceprovider: klasse til, ud /app. folkesundhedsprogrammet,.,, pusher klasser i din kontrollører, som , vinkla. pusher. facader er pusher, frem for den registeransvarlige klasse.,, du er okay med pakker, men hvad med hård konfiguration?du er nødt til at offentliggøre sælgere i deres projekter, ved anvendelse af følgende kommando:,, folkesundhedsprogrammet håndværker sælger: offentliggør denne kommando vil skabe en ud fil ud /pusher. php,, og du er nødt til at stille de nødvendige beviser, som man kan finde i din pusher instrumentbræt.The config file will be like below:,,'connections' => [ 'main' => [ 'auth_key' => 'auth_key', 'secret' => 'secret', 'app_id' => 'app_id', 'options' => [], 'host' => null, 'port' => null, 'timeout' => null, ], 'alternative' => [ 'auth_key' => 'your-auth-key', 'secret' => 'your-secret', 'app_id' => 'your-app-id', 'options' => [], 'host' => null, 'port' => null, 'timeout' => null, ], ],,The fourth endpoint is for listing the last five messages to display on the chat palder for nytiltrådte brugere.den magiske kode:,, offentlig funktion listmessages (besked $meddelelse) {tilbage response() - > json ($besked - > orderby ("created_at", "desc") - > (5) - > get())}, i denne kodeks, budskab, model er injiceret til handling eller udfører database i tilknytning hertil, ved at bruge $besked.første for meddelelser, created_at, i rækkefølge, og så tager de sidste fem.resultatet er vendt tilbage i json format ved hjælp af, response() - > json (...). , vi har nævnt om de registeransvarlige og handlinger, men hvor er de gennemførte aktioner, når brugeren går til en specifik url?du kan lægge din rute konfigurationer til sagsakter, app /http //ruter. folkesundhedsprogrammet.du kan se et eksempel:,, <?php rute: kom (» /snak "," en app. http: /chatcontroller @ getchat flyveledere. snak ') vej: kom (» /login "," en app. http: /chatcontroller @ getlogin flyveledere. snak') vej: kom (» /meddelelser "," en app. http: /chatcontroller @ listmessages flyveledere. snak ") vej: post (» /meddelelser, en app. http: /chatcontroller @ savemessage flyveledere. snak"), i anvendelse, anmodningen uri og anmode om metode tildeles den registeransvarliges navn og aktion navn.,, er det med den registeransvarlige.lad os skifte til betragtning.,, mener, at i dette afsnit, har vi brugt klingen skabelon motor, som laravel.der er faktisk ingen model motoren ting i vores projekter, men hvis du vil sende værdier fra den registeransvarlige synspunkter, kan de direkte anvendelse af dette projekt. , vi har to sider: på, login.blade.php og chat. blade. folkesundhedsprogrammet.som du kan se, er der en klinge nøgleord i betragtning filnavne for at sige, at dette vil blive anvendt til blade skabelon motor. , den første er simpelthen for login operation, så lad os tale om, at side.på denne baggrund fil, er der nogle tredjeparter javascript biblioteker betjenes fra en cdn som jquery,, jquery kage, bootstrap, og , pusher.vi har chattet med en form for at sende sms' er, og laravel sætter en meta - beskrivelse i side:,, < meta - navn = "_token" værdi = "symbolsk" >,, men vi sender et chat besked via ajax, og der er ingen tegn på ajax anmodning rør.We provide a solution by using the following code snippet:,,$.ajaxSetup({ headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') } });,,Whenever you send an AJAX request, this token will be put inside the header. ,,In order to listen to the message channel in real time, we have used the following:,,var pusher = new Pusher('app_id'); var channel = pusher.subscribe('chat'); channel.bind('message', function(data) { var message = data.message; $(".media-list li").first().remove(); $(".media-list").append('<li class="media"><div class="media-body"><div class="media"><div class="media-body">' + message.message + '<br/><small class="text-muted">' + message.author +
bygge en rigtig
Previous:at wp_query: en introduktion