Tiešsaistes tiešsaistes tērzēšanas telpas izveide, pamatojoties uz Laravel + Swoole + Vue (14. lpp.)

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai

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:

Šis ir attēla nosaukums

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ā:

Šis ir attēla nosaukums

Š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ī: