Я из Венесуэлы, у меня проблема с попыткой интегрировать Laravel Echo в проект, я пробую все, и я хочу получить вашу помощь.
возможно я не работаю с правильным путем.
Я пытаюсь использовать трансляцию событий с помощью сокета io, потому что я работаю в стартапе, и мне очень трудно оплачивать такие услуги, как pusher.
я пытаюсь сделать простой чат в реальном времени ..
Это мой чат-контроллер ..
public function index(Request $request){
$sender=Auth::user()->id;
$receiver=\App\User::find(2);
$message=new Message;
$message->message="Hola, esto es una prueba de eventos";
$message->user_receiver_id=$receiver->id;
$message->user_sender_id=Auth::user()->id;
$message->id_chat=1;
$message->save();
event(new \App\Events\sendMessage($message,$receiver));
return response()->json(["status"=>"ok"]);
}
Этот чат хранит в базе данных сообщения в соответствии с определенной группой (чат).
Событие, которое будет запущено:
класс sendMessage реализует ShouldBroadcast
{
использовать Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public $message;
public $user_receiver;
public function __construct(Message $message,User $user_receiver)
{
$this->message=$message;
$this->user_receiver=$user_receiver;
}
public function broadcastOn()
{
\Log::info($this->message->id_chat);
return new PrivateChannel('chat.1');}}
Мой app.js:
require('./bootstrap');
import Echo from "laravel-echo";
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001'
});window.Echo.channel('chat.1')
.listen('sendMessage', e => {
console.log(e);
});
вначале я просто хочу получить публичные переменные из моего события sendMessages, после этого я хочу построить представление.
Я запускаю слушателя php artisan и запускаю de laravel echo server.
когда я отправляю сообщение, это происходит с эхо-сервером laravel и слушателем:
введите описание изображения здесь
Я думаю, что процесс работает нормально, но я думаю, что у меня проблема только с клиентом ..
потому что ничего не происходит в клиенте, когда я отправляю сообщение.
Извините за мой английский, я надеюсь, что вы можете мне помочь.
Эту проблему очень трудно устранить без полного исходного кода и запуска приложения.
Я реализовал все 3 типа каналов (частные, публичные & присутствие) в этом приложении чата, может быть, вы можете получить некоторые идеи из него:
https://github.com/xparthx/laravel-realtime-chat
Спасибо
Вы должны использовать только use SerializesModels;
Также, broadcast(new \App\Events\sendMessage($message,$receiver));
Вы можете найти пример вещания Laravel 5 здесь,