Autour de Laravel

LaravelEchoServer & Socket.io

Avatar de Gabriel-V
Gabriel-V

Bonsoir !

J'ai une application sous Laravel 8 qui tourne avec Inertia JS et VueJS 3.

Mon seul petit problème (qui me fait me tirer les cheveux) c'est la mise en place d'un serveur de notification avec LaravelEchoServer et Socket.io.

J'ai franchement l'impression que tout est totalement aléatoire c'est incroyable !

Si je retire le prefix par défaut pour les events dans la config database : mon serveur ne reçoit pas les events. Si je passe mon serveur LaravelEcho en mode production : mon serveur ne reçoit pas les events. Et surtout quoi je fasse : mon serveur ne reçoit pas les connexions clients.

Au niveau du client ne lui même aucun erreur n'est générée (la connexion via socket.io se fait bien) mais LaravelEcho lui... bah il reçoit rien du tout !

Je vous ci-dessous un bout de config avec un exemple d'utilisation, si vous parvenez à voir où est le soucis... d'avance merci !!

laravel-echo-server.json

{
	"authHost": "http://localhost",
	"authEndpoint": "/broadcasting/auth",
	"clients": [],
	"database": "redis",
	"databaseConfig": {
		"redis": {
            "port": "6379",
            "host": "127.0.0.1"
        },
		"sqlite": {
			"databasePath": "/database/laravel-echo-server.sqlite"
		}
	},
	"devMode": false,
	"host": null,
	"port": "6001",
	"protocol": "http",
	"socketio": {},
	"secureOptions": 67108864,
	"sslCertPath": "",
	"sslKeyPath": "",
	"sslCertChainPath": "",
	"sslPassphrase": "",
	"subscribers": {
		"http": true,
		"redis": true
	},
	"apiOriginAllow": {
		"allowCors": false,
		"allowOrigin": "",
		"allowMethods": "",
		"allowHeaders": ""
	}
}

routes/web.php

Route::get('notification', function() {
    event( new \App\Events\SystemMessage());
});

resources/js/Layouts/AppLayout.js

    mounted() {
        try {
            const status = Echo.channel('everyone')
                .listen('SystemMessage', (data) => {
                    console.log(data);
                });

            console.log(status)
        } catch (error) {
            console.log(error);
        }

        axios.get('/notification')
    }
Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.