Tiešsaistes tiešsaistes tērzēšanas telpas izveide, pamatojoties uz Laravel + Swoole + Vue (14. lpp.)
Tiešsaistes tiešsaistes tērzēšanas telpas izveide, pamatojoties uz Laravel + Swoole + Vue (14. lpp.): Sūtīt attēlu ziņojumu
Pēdējā apmācībā mēs demonstrējām teksta/emocionālu ziņojumu izlaišanu tērzēšanas istabās. Šodien mēs apskatīsim, kā ievietot multiziņas.
kā pārskaitīt naudu no bitmart uz bankas kontu
Front-end mijiedarbības kods
Mēs sākām no priekšējā gala montāžas, montāžas tērzēšanas telpā | _+_ |, klienta pamata loģika, lai nosūtītu attēlus | _+_ | pieeja mums ir jāpielāgo tā, lai tas atbilstu sākotnējā uz kodu balstītā interfeisa Laravel + Swoole aizmugurei:
Chat.Vue
Kad tērzēšanas telpā noklikšķināsim uz kameras ikonas, parādīsies attēlu augšupielādes logs:
Pēc attēla izvēles tas nosauks iepriekš minēto | _+_ | attēlu augšupielādes metode.
Tas ietver divas loģikas: vispirms izsauc aizmugures saskarni, lai augšupielādētu attēlus, pamatojoties uz HTTP protokolu, un saglabātu ziņojumu | _+_ | tabulā, pēc veiksmīgas augšupielādes tā nosūtīs ziņojumu uz Websocket serveri, un pēc tam Websocket serveris pārraida ziņojumu visiem tiešsaistes lietotājiem.
Augšupielādētais attēls atbilst šai koda rindai:
reaģēt vietējās pogas piemērs
fileup
Pēdējais zvans uz aizmugures saskarnes kodu atrodas | _+_ | šeit:
fileup() { const that = this; const file1 = document.getElementById('inputFile').files[0]; if (file1) { const formdata = new window.FormData(); formdata.append('file', file1); formdata.append('api_token', this.auth_token); formdata.append('roomid', that.roomid); this.$store.dispatch('uploadImg', formdata); const fr = new window.FileReader(); fr.onload = function () { const obj = { username: that.userid, src: that.src, img: fr.result, msg: '', roomid: that.roomid, time: new Date(), api_token: that.auth_token }; socket.emit('message', obj); }; fr.readAsDataURL(file1); this.$nextTick(() => { this.container.scrollTop = 10000; }); } else { console.log('Must have file'); } },
Šo saskarni mēs drīzumā ierakstīsim aizmugurē.
Multiziņas nosūtīšana, pamatojoties uz Websocket, atbilst šādai koda rindai:
fileup
Tas neatšķiras no īsziņas nosūtīšanas, pirms kods ir vienkārši | _+_ | tur, lai pievienotu tikai imgfield.
Attēlu augšupielādes saskarne
Tālāk mēs rakstām attēlu augšupielādes saskarni Laravel aizmugurē.
| _+_ | jauns maršruts | _+_ |:
messages
Pēc tam izveidojiet kontrolieri ar Artisan komandām | _+_ |:
this.$store.dispatch('uploadImg', formdata);
Jaunizveidotajā failu kontrollerī | _+_ | gatavojas | _+_ | kodi ir šādi:
resources/js/api/server.js
Tas galvenokārt ietver attēlu augšupielādi un ziņojumu saglabāšanas loģiku. Tā kā mēs saglabāsim attēlu | _+_ | nākamajā direktorijā, lai ļautu attēlu pieprasīt, izmantojot tīmekļa vietrādi URL, jums | _+_ | izveidojiet mīkstu katalogu:
// upload image postUploadFile: data => Axios.post('/file/uploadimg', data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }),
Websocket servera apraide
Visbeidzot, mēs | _+_ | | _+_ | kanālu papildinošā attēlu ziņojumu apstrādes loģika:
leņķiskais 2 atsvaidzināšanas komponents
socket.emit('message', obj);
Ļoti vienkārši, vienkārši pievienojiet klienta augšupielādēto grafisko ziņojumu lauku iepriekšējā apraides ziņojuma laukam bez citas loģikas.
Šajā brīdī mēs varam pabeigt priekšgala un aizmugures kodu attēlu ziņojumu sūtīšanai. Tālāk mēs pārbaudām attēlu ziņojumu sūtīšanu tērzēšanas istabas saskarnē.
Pārbaudiet attēla ziņojuma izlaišanu
Pirms sākat, kompilējiet priekšgala resursus:
obj
Veiciet priekšējā koda izmaiņu stāšanos spēkā. Un restartējiet Swoole HTTP un WebSocket serveri:
kur nopirkt krānu
routes/api.php
Ļaujiet aizmugures koda izmaiņām stāties spēkā.
Pēc tam atveriet tērzēšanas istabu pārlūkprogrammās Chrome un Firefox, piesakieties un ieejiet tajā pašā telpā, un jūs varat nosūtīt multiziņas viena otrai reālā laikā:
Šajā brīdī mēs esam pabeiguši tērzēšanas istabas galveno funkciju. Tālāk mēs optimizēsim projekta kodu, jo īpaši aizmugures WebSocket komunikācijas veiktspēju un eleganci.
#laravel #swoole #vue #tērzēšanas istaba
Skatīt Arī:
- Fix QuickBooks algu kļūda 15243 (FCS pakalpojums ir atspējots)
- Reāllaika interaktīvās HTML tabulas ar Easybase un DataTables.net
- Izveidojiet dinamisku formu UIKit (kompozīcijas izkārtojums, atšķirīgs datu avots, UICollectionView)
- Kā bloķēt vietnes pārlūkā Chrome
- Firebase administratora SDK ar GraphQL