当前位置: 首页 > 知识库问答 >
问题:

拉威尔回声不是在听

习和通
2023-03-14

我来自委内瑞拉,我在尝试将laravel echo与一个项目整合时遇到了一个问题,我尝试了一切,我希望得到你的帮助。

也许我的工作方式不对。

我正在尝试将广播事件与socket 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"]);
}

这种聊天存储在数据库中,根据消息确定群组(chat)。

将触发的事件是:

类sendMessage实现ShouldBroadcast{使用Dispatchable, InteractsAnd Socket, SeriazesModel;

/**
 * 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服务器和侦听器会发生这种情况:

Laravel echo服务器输出

在此输入图像描述

我认为这个过程很好,但我认为我只有客户的问题...

因为当我发送消息时,客户端没有发生任何事情。

对不起我的英语,我希望你能帮助我。

共有3个答案

鄢朝斑
2023-03-14

在我的情况下,我使用Redis,我注意到我的频道名称projectName_database有一个前缀,Laravel

阴靖
2023-03-14

您应该只使用使用序列化模型

此外,广播(新的\App\Events\sendMessage($消息,$接收器));

您可以在这里找到Laravel 5广播示例,

https://github.com/durmus-aydogdu/real-time-application

刘和昶
2023-03-14

例如,如果您使用Echo.channel(my-Channel),您需要做这样的事情,出于某种原因,您需要在事件名称前添加(.)。

Echo.channel(`my-channel`)
.listen('.my-event', (e) => {
    consolec.log(e);
});
 类似资料:
  • 我目前正在研究构建SaaS构建管理工具。我想知道的是,如果我使用laravel passport作为api令牌,我如何为用户分配角色,例如: SuperAdmin:可以创建项目|可以创建新用户并为用户分配角色。 管理员:可以查看项目。 因为我希望能够根据用户权限隐藏前端上的元素。 例如,如果我使用传统的laravel应用程序,我可以使用委托和刀片指令@role('admin')来显示基于用户权限类

  • 我对拉威尔望远镜的部分有点困惑。 我有一个用户模型和表。 如何为用户分配用户、客户和/或管理员的角色。 我有一个带有vue和laravel api后端的水疗中心。我用https://laravel.com/docs/5.3/passport#consuming-使用javascript创建api 我如何分配哪个用户模型具有哪些作用域? 还是范围与角色不同? 您将如何实现这一点? 提前谢谢!

  • 我对Laravel截断的数据有一个小问题。我将传递给我的后端值,该值可以是表中定义的“百分比”或“金额”,但在表中也可以为null,但每次尝试将其设置为null时,都会出现如下错误: {"discount_currency":["您输入的值无效。"]} 或者当我从处理请求中删除enum时,它会说 所以我传递数据抛出API从我的Vue,这个婴儿车的请求看起来像: 所以如果我删除...我有第二个错误。

  • 我正在构建一个Laravel web应用程序,其中我需要一个动态图像库,我构建了一个后端管理面板,可以在其中添加图像,我成功地将图像添加并保存到数据库中,但我无法编辑或删除它们。 错误是: UrlGenerationException中的ErrorException。php第17行:缺少[Route:galleries.update][URI:backend/galleries/{gallery}

  • 我试图设置一个属性,使用@产量和@部分,但如何?我试图用 和 但是它返回id= 我知道我可以用默认的id来管理它,但我不喜欢这种方式,如果我需要使用自定义属性呢?

  • 我正在使用这个库:https://github.com/davibennun/laravel-push-notification 用于发送推送通知。我使用了示例代码,我的iPhone上的推送消息正在工作。 现在我只想向多个设备发送一条消息。文件上说我需要使用: 但是我想从devicecollection上的数据库中得到一个foreach循环。我该怎么和拉威尔一起做?非常感谢!