我来自委内瑞拉,我在尝试将Laravel Echo与项目集成时遇到了问题,我尝试了很多方法,希望能得到你的帮助。
也许我没有用正确的方法。
我正在尝试使用Socket IO广播事件,因为我正在创业公司工作,很难支付像Pusher这样的服务费用。
我正在尝试创建一个简单的实时聊天应用程序。
以下是我的chatController。
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"]);
}
这个聊天应用程序将消息根据具体的群组(聊天)保存在数据库中。
触发的事件是:
``` class sendMessage implements ShouldBroadcast { use 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 listener并运行laravel echo server。
当我发送消息时,laravel echo服务器和listener会发生以下情况:
我认为该过程工作正常,但我认为客户端存在问题。
因为当我发送消息时,客户端没有任何反应。
抱歉我的英语不好,希望您能帮助我。