我来自委内瑞拉,我在尝试将 laravel echo 与项目集成时遇到问题,我尝试了一切,我想得到你的帮助。
也许我没有以正确的方式工作。
我正在尝试使用带有套接字 io 的广播事件,因为我在一家初创公司工作,并且很难支付推送器之类的服务。
我正在尝试进行简单的实时聊天..
那是我的聊天控制器..
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 服务器。
当我发送消息时,laravel echo 服务器和监听器会发生这种情况:
我认为这个过程很好,但我认为我只有客户有问题..
因为当我发送消息时,客户端没有任何反应。
对不起我的英语,我希望你能帮助我。