Add websocket
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Philipp Lang 2023-07-25 17:23:48 +02:00
parent 1141ad1cbf
commit 65aeb4aeaf
10 changed files with 1193 additions and 8 deletions

View File

@ -16,3 +16,5 @@ MAIL_FROM_NAME=me
DB_PASSWORD=secret_db_password
MYSQL_PASSWORD=secret_db_password
PUSHER_APP_HOST=socketi

View File

@ -42,15 +42,16 @@
"monicahq/laravel-sabre": "^1.6",
"nunomaduro/collision": "^6.1",
"phake/phake": "^4.2",
"pusher/pusher-php-server": "^7.2",
"spatie/laravel-data": "^3.0",
"spatie/laravel-ignition": "^1.0",
"spatie/laravel-medialibrary": "^10.0",
"spatie/laravel-settings": "^2.2",
"worksome/request-factories": "^2.5",
"zoomyboy/laravel-nami": "dev-master",
"zoomyboy/osm": "^1.0",
"zoomyboy/phone": "^1.0",
"zoomyboy/tex": "dev-main as 1.0",
"zoomyboy/osm": "^1.0"
"zoomyboy/tex": "dev-main as 1.0"
},
"require-dev": {
"fakerphp/faker": "^1.9.1",

1111
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -14,7 +14,7 @@ return [
|
*/
'default' => env('BROADCAST_DRIVER', 'log'),
'default' => env('BROADCAST_DRIVER', 'pusher'),
/*
|--------------------------------------------------------------------------
@ -30,12 +30,16 @@ return [
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'key' => 'adremakey',
'app_id' => 'adremaid',
'secret' => 'adremasecret',
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'cluster' => 'adrema',
'encrypted' => true,
'host' => env('PUSHER_APP_HOST', '127.0.0.1'),
'useTLS' => true,
'port' => 6001,
'scheme' => 'http',
],
],

View File

@ -87,6 +87,15 @@ services:
volumes:
- ./data/db:/var/lib/mysql
socketi:
image: quay.io/soketi/soketi:89604f268623cf799573178a7ba56b7491416bde-16-debian
ports:
- '6001:6001'
environment:
SOKETI_DEFAULT_APP_ID: adremaid
SOKETI_DEFAULT_APP_KEY: adremakey
SOKETI_DEFAULT_APP_SECRET: adremasecret
redis:
image: redis:alpine3.18
container_name: redis

41
package-lock.json generated
View File

@ -10,12 +10,14 @@
"@vitejs/plugin-vue": "^4.2.3",
"change-case": "^4.1.2",
"floating-vue": "^2.0.0-beta.24",
"laravel-echo": "^1.15.2",
"laravel-vite-plugin": "^0.7.8",
"lodash": "^4.17.21",
"merge": "^2.1.1",
"pinia": "^2.1.4",
"postcss-import": "^14.1.0",
"prettier": "^2.8.8",
"pusher-js": "^8.3.0",
"svg-sprite": "^2.0.2",
"vite": "^4.3.9",
"vue": "^3.3.4",
@ -2444,6 +2446,14 @@
"resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
"integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="
},
"node_modules/laravel-echo": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/laravel-echo/-/laravel-echo-1.15.2.tgz",
"integrity": "sha512-FpbYv4hnAE/ck1ow2aLlx3wBuDRMNWBcSCpFmh9EkUxxBYZoaRt8rB4pKPnfAESvcaguohEesQ1naNM81zCWPQ==",
"engines": {
"node": ">=10"
}
},
"node_modules/laravel-vite-plugin": {
"version": "0.7.8",
"resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.7.8.tgz",
@ -3165,6 +3175,14 @@
"node": ">=6"
}
},
"node_modules/pusher-js": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/pusher-js/-/pusher-js-8.3.0.tgz",
"integrity": "sha512-6GohP06WlVeomAQQe9qWh1IDzd3+InluWt+ZUOcecVK1SEQkg6a8uYVsvxSJm7cbccfmHhE0jDkmhKIhue8vmA==",
"dependencies": {
"tweetnacl": "^1.0.3"
}
},
"node_modules/qs": {
"version": "6.11.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
@ -3745,6 +3763,11 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz",
"integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w=="
},
"node_modules/tweetnacl": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
"integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw=="
},
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@ -5766,6 +5789,11 @@
"resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
"integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="
},
"laravel-echo": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/laravel-echo/-/laravel-echo-1.15.2.tgz",
"integrity": "sha512-FpbYv4hnAE/ck1ow2aLlx3wBuDRMNWBcSCpFmh9EkUxxBYZoaRt8rB4pKPnfAESvcaguohEesQ1naNM81zCWPQ=="
},
"laravel-vite-plugin": {
"version": "0.7.8",
"resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.7.8.tgz",
@ -6262,6 +6290,14 @@
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
"dev": true
},
"pusher-js": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/pusher-js/-/pusher-js-8.3.0.tgz",
"integrity": "sha512-6GohP06WlVeomAQQe9qWh1IDzd3+InluWt+ZUOcecVK1SEQkg6a8uYVsvxSJm7cbccfmHhE0jDkmhKIhue8vmA==",
"requires": {
"tweetnacl": "^1.0.3"
}
},
"qs": {
"version": "6.11.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
@ -6678,6 +6714,11 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz",
"integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w=="
},
"tweetnacl": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
"integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw=="
},
"type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",

View File

@ -26,12 +26,14 @@
"@vitejs/plugin-vue": "^4.2.3",
"change-case": "^4.1.2",
"floating-vue": "^2.0.0-beta.24",
"laravel-echo": "^1.15.2",
"laravel-vite-plugin": "^0.7.8",
"lodash": "^4.17.21",
"merge": "^2.1.1",
"pinia": "^2.1.4",
"postcss-import": "^14.1.0",
"prettier": "^2.8.8",
"pusher-js": "^8.3.0",
"svg-sprite": "^2.0.2",
"vite": "^4.3.9",
"vue": "^3.3.4",

View File

@ -26,6 +26,7 @@
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<server name="BROADCAST_DRIVER" value="log"/>
<server name="MAIL_MAILER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>

2
resources/js/app.js vendored
View File

@ -4,6 +4,7 @@ import axios from 'axios';
import VueAxios from 'vue-axios';
import {Plugin as FloatingVue, options as FloatingVueOptions} from './lib/floatingVue.js';
import {createPinia, PiniaVuePlugin} from 'pinia';
import Echo from './lib/echo.js';
import requireModules from './lib/requireModules.js';
import AppLayout from './layouts/AppLayout.vue';
@ -21,6 +22,7 @@ const pinia = createPinia();
var views = import.meta.glob('./views/**/*.vue');
axios.interceptors.response.use(...toastInterceptor);
window.Echo = Echo;
createInertiaApp({
title: (title) => `${title} | Adrema`,

14
resources/js/lib/echo.js vendored Normal file
View File

@ -0,0 +1,14 @@
import Pusher from 'pusher-js';
import Echo from 'laravel-echo';
window.Pusher = Pusher;
export default new Echo({
broadcaster: 'pusher',
key: 'adremakey',
wsHost: window.location.hostname,
wsPort: 6001,
forceTLS: false,
disableStats: true,
cluster: 'adrema',
enabledTransports: ['ws', 'wss'],
});