Я использую сервер веб-сокетов для отправки информации о событии в виде трансляции. Но я не могу получить информацию через эхо laravel. это моя конфигурация для сервера laravel и websocket.
конфигурация вещания
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
// 'encrypted' => true,
'host' => '127.0.0.1',
'port' => 6001,
'scheme' => 'http',
//disable cros orgin
'useTLS' => false,
],
],
конфигурация веб-сокетов
'apps' => [
[
'id' => env('PUSHER_APP_ID'),
'name' => env('APP_NAME'),
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'path' => env('PUSHER_APP_PATH'),
'capacity' => null,
'enable_client_messages' => false,
'enable_statistics' => true,
],
],
конфиг окружения
PUSHER_APP_ID=your-pusher-app-id
PUSHER_APP_KEY=your-pusher-key
PUSHER_APP_SECRET=your-pusher-secret
PUSHER_APP_CLUSTER=mt1
LARAVEL_WEBSOCKETS_PORT=6001
boostrap.js
window.Echo = new Echo({
broadcaster: 'pusher',
key: "your-pusher-key",
cluster: "mt1",
wsHost: window.location.hostname,
wsPort: 6001,
//two config above disable crose orgin
disableStats: true,
forceTLS: false,
});
Мой файл событий
class OrderStatusChange implements ShouldBroadcast{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
public $user;
public function __construct($message,$user)
{
$this->message = $message;
$this->user = $user;
}
public function broadcastOn()
{
return new Channel('notifications');
}
}
и laravel-эхо
window.Echo.channel('notifications').listen('OrderStatusChange', (e) => {
console.info(e.data);
console.info(e);
console.info('window');
});
и консоль да
Pusher : : ["State changed","initialized -> connecting"] app.js:38851:32
Толкатель:: ["Подключение",{"транспорт":"ws","url":"ws://shop.local:6001/app/your-pusher-key?protocol=7&client=js&version=7.0.2&flash= ложь"}] app.js:38851:32 Pusher:: ["Состояние изменено","подключение -> подключено с новым идентификатором сокета 307045135.646205772"] app.js:38851:32 Pusher : : ["Событие отправлено",{"событие":"толкатель:подписаться","данные":{"авторизация":"","канал":"заказ"}}] Pusher:: ["Событие записано",{"событие":"pusher_internal:subscription_succeeded","канал":"заказ"}] app.js:38851:32 Pusher : : ["Нет обратных вызовов по заказу для pusher:subscription_succeeded"]
Вы используете функцию broadcastWith
в своем event
?
в этой функции вы можете определить данные, которые вы хотите транслировать. кроме того, убедитесь, что ваш WebSocket успешно подключен.
Соединение успешно установлено. и я могу отправлять и получать информацию через панель веб-сокета, но не могу сам отправлять и получать информацию на событие.
Всем спасибо я нашел решение, которое использовал, написал ответ, может быть, поможет кому-то Просто запустите очередь и если вам не нужны очереди только в файле env Измените значение QUEUE_CONNECTION на синхронизацию. А также использовать значение ShouldBroadcastNow в классе событий
вам нужно проверить это stackoverflow.com/questions/5751495/…