J'ai mis en place un événement et une nouvelle chaîne:
class TaskCreated implements shouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $task;
public function __construct(Task $task)
{
$this->task = $task;
}
}
et installé Echo et le configurer
import Echo from "laravel-echo"
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'pusher-key',
cluster: 'ap2',
encrypted: true
});
puis j'appelle l'événement TaskCreated lorsqu'une tâche est publiée
event(new TaskCreated($task));
Cependant, le problème est qu'Echo n'écoute pas les journaux du pousseur ou TOUT. même si dans laravel-websockets l'événement a été créé en tant que message api.
voici vue js Implémentation Echo:
mounted () {
axios.get('/tasks').then(response => (this.tasks = response.data));
Echo.channel('taskCreated').listen('TaskCreated', (e) => {
console.log(e);
this.tasks.Push(task.body)
});
dans le tableau de bord:
api-message Channel: taskCreated, Event: App\Events\TaskCreated 19:01:55
MISE À JOUR
Maintenant, lorsque j'ai essayé de me connecter avec WS, l'état de la connexion est en attente pendant 10 secondes puis terminé avec une erreur WebSocket est fermé avant que la connexion ne soit établie. AND Erreur lors de l'établissement de la connexion: net :: ERR_CERT_AUTHORITY_INVALID.
URL de la requête: wss: //127.0.0.1/app/local? Protocol = 7 & client = js & version = 6.0.2 & flash = false
import Echo from "laravel-echo"
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
wsHost: window.location.hostname,
wssPort: 6001,
disableStats: true,
enabledTransports: ['ws', 'wss']
Vous pouvez peut-être essayer:
Dans votre événement TaskCreated
:
public function broadcastOn()
{
return new Channel('task.created');
}
et dans votre Vue:
Echo.channel('task.created').listen('TaskCreated', (e) => {
this.tasks.Push(task.body)
});
Comme Kabelbaan l'a dit, supprimez le point mais accédez à la console de débogage et actualisez simplement votre application pour commencer. Vous devriez voir la connexion et l'abonnement pour votre canal de tâches. Si vous ne le faites pas, vous pouvez commencer à déboguer la connexion plutôt que de pousser la distribution de l'événement. De plus, je suppose que le copier-coller est tout simplement incomplet mais votre déclaration window.Echo est incomplète.
net :: ERR_CERT_AUTHORITY_INVALID.
URL de la requête: wss: //127.0.0.1/app/local? Protocol = 7 & client = js & version = 6.0.2 & flash = false
Vous avez peut-être un problème avec votre certification ssl . Vous utilisez wss qui se connecte sur https uniquement . Vous devriez vérifier votre certificat SSL ou utiliser ws à la place.
Astuce plus:
J'utiliserais le combo socket.io + redis au lieu de poussoir.