2017-01-13 6 views
2

Я хочу прослушать событие на стороне сервера на стороне javascript. Я нашел этот пакет для этого:Laravel echo with socket.io

https://github.com/tlaverdure/laravel-echo-server

Я уже прочитал все, если это так много раз:

https://laravel.com/docs/5.3/events

https://laravel.com/docs/5.3/broadcasting

https://laravel.com/docs/5.3/notifications

До сих пор у меня есть сделал это:

Действие

Контроллер:

broadcast(new NewVote()); 
event(new NewVote()); // Also tried this 

"NewVote" Класс события:

public function broadcastOn() 
    { 
     return new Channel('new-vote'); 
    } 

Javascript:

import Echo from "laravel-echo" 

window.Echo = new Echo({ 
    broadcaster: 'socket.io', 
    host: 'http://assessment.local:6001' 
}); 

window.Echo.channel('new-vote') 
    .listen('NewVote', (e) => { 
     console.log(e); 
    }); 

Laravel эхо-server.js на

{ 
    "appKey": "0p4o9t942ct15boc4nr8tjb178q29fdmlcat8c1p1s51i2pbq9nmtjud94t4", 
    "authHost": null, 
    "authEndpoint": "/broadcasting/auth", 
    "database": "redis", 
    "databaseConfig": { 
     "redis": {}, 
     "sqlite": { 
      "databasePath": "/database/laravel-echo-server.sqlite" 
     } 
    }, 
    "devMode": true, 
    "host": "assessment.local", 
    "port": "6001", 
    "referrers": [], 
    "socketio": {}, 
    "sslCertPath": "", 
    "sslKeyPath": "" 
} 

Уже эти команды работают:

laravel-echo-server start 
php artisan queue:work 
php artisan queue:listen 
gulp watch 

Все, что я ожидал массаж консоли, когда я огонь событие. Но я ничего не получаю на консоли.

Сообщите мне, если требуется какая-либо другая информация.

Примечание. Мой сервер socket.io работает успешно без каких-либо ошибок.

Спасибо,

Parth Вор

+0

Ваше соединение с сервером «ws» успешно завершено? –

+0

@CerlinBoss да это –

+0

как насчет кадров внутри 'ws' подключения? Вы их получили? –

ответ

2

Настройка Echo мне потребовалась некоторое время, но я нашел конфигурацию на сторону клиента, чтобы содержать запутанные имена событий по умолчанию.

Try настройки на стороне клиента библиотеки Echo следующим образом:

import Echo from "laravel-echo" 

window.Echo = new Echo({ 
    namespace: 'Base.Event.Namespace', //defaults to App.Event 
    broadcaster: 'socket.io', 
    host: 'http://assessment.local:6001' 
}); 

Так при стрельбе событие, как так event(new \Hello\World\NewVote()), убедитесь, что эхо сконфигурирован с пространством имен Hello.World

Ура!

+0

Я установил пакет npm с помощью этой команды. 'npm install', а затем включил эту строку' import Echo из 'laravel-echo'' в bootstrap.js, которая находится в ресурсах \ assets \ js. Я получил сообщение об ошибке «Не могу найти модуль» laravel-echo «Должен ли я установить что-нибудь для этого? Я изучаю socket.io в ларавельном лезвии, используя эхо – Pankaj

2

Не знаю, в чем проблема. Но, наконец, я заставляю его работать.

Я также создал небольшую демонстрацию, которая иллюстрирует использование эха Laravel с socket.io, используя laravel-echo-server (https://github.com/tlaverdure/laravel-echo-server).

https://github.com/xparthx/Larevel-echo-with-socket.io

Может кому-то помочь.