У меня Laravel работает локально с php artisan serve
, установлен laravel -echo-сервер с npm install -g laravel-echo-server
, затем я запускаю команду laravel-echo-server init
, чтобы сгенерировать laravel -echo-сервер. json:
{
"authHost": "http://localhost",
"authEndpoint": "/broadcasting/auth",
"clients": [],
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": {},
"secureOptions": 67108864,
"sslCertPath": "",
"sslKeyPath": "",
"sslCertChainPath": "",
"sslPassphrase": "",
"subscribers": {
"http": true,
"redis": true
},
"apiOriginAllow": {
"allowCors": true,
"allowOrigin": "http://localhost:8001",
"allowMethods": "GET, POST",
"allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
}
}
Затем я запускаю команду laravel-echo-server start
, чтобы запустить сервер, что приводит к этой консоли , затем я запускаю команду php artisan queue:listen
для прослушивания очереди и, наконец, я запусти тинкер консоль для запуска моего мероприятия. Это просто базовое c событие с сообщением «test»:
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class TestEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
private $message = 'test';
/**
* Create a new event instance.
*
*/
public function __construct()
{
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return ['test-channel'];
}
public function broadcastAs()
{
return 'test';
}
}
In angular Я установил следующее:
this.echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001',
});
this.echo.connector.socket.on('connect', function () {
console.log('CONNECTED');
});
this.echo.connector.socket.on('reconnecting', function () {
console.log('CONNECTING');
});
this.echo.connector.socket.on('disconnect', function () {
console.log('DISCONNECTED');
});
this.echo.channel('test-channel')
.listen('.test', (data) => {
console.log(data);
});
Однако, когда я запускаю angular клиент Я получаю следующее сообщение: Клиент Socket.io не найден