我来自委内瑞拉,我在尝试将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"]);
}
该聊天将根据确定的组(聊天)的消息存储在数据库中。
将触发的事件为:
类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回声服务器和监听程序会发生这种情况:
我认为这个过程运行得很好,但我认为我只与客户有一个问题。
因为当我发送消息时,客户端中没有发生任何事情。
对不起,我的英语,我希望你能帮助我。
发布于 2017-05-12 13:53:11
如果没有完整的源代码和正在运行的应用程序,这个问题很难解决。
我已经在这个聊天应用中实现了所有三种类型的通道(私人,公共和在线),也许你可以从中得到一些想法:
https://github.com/xparthx/laravel-realtime-chat
谢谢
发布于 2021-02-08 17:48:10
例如,如果您使用事件(my-channel
),则需要执行以下操作,请注意(‘.my-Echo.channel’),出于某种原因,您需要使用(.)在事件名称之前。
Echo.channel(`my-channel`)
.listen('.my-event', (e) => {
consolec.log(e);
});
发布于 2018-06-07 05:14:02
您应该只使用use SerializesModels;
还有,broadcast(new \App\Events\sendMessage($message,$receiver));
你可以在这里找到Laravel 5广播的例子,
https://stackoverflow.com/questions/43927792
复制相似问题