回声连接不接收来自广播状态通道的数据

Posted

技术标签:

【中文标题】回声连接不接收来自广播状态通道的数据【英文标题】:Echo join does not recieve data from broadcasted presence channel 【发布时间】:2018-09-18 00:48:21 【问题描述】:

我在 laravel 的 echo 和 pusher 方面非常基础,尽管有文档和教程,但我一直面临一个问题。我正在尝试在 youtube 视频之后在我的网站中创建实时聊天消息功能。 我的控制器、模型、通道和 app.js 的代码摘录分别如下:

public function send(Request $request)

    $user = Auth::user();
    $id = Auth::user()->id;

    $message = $user->messages()->create([
        'user_id' => $id,
        'messages' => $request->get('messages')
    ]);
    broadcast(new MessagePosted($message, $user));
    return ['status' => 'Message Sent!'];

型号:

 public function broadcastOn()
    
//        return ['chatit'];
          return new PresenceChannel('chatit');
    

频道:

Broadcast::channel('chatit', function ($user) 
    return true;
);

应用程序:

window.Echo.join('chatit')
            .listen('MessagePosted', (e) => 
        console.log(e)
    );

我现在的问题是,如果我在我的模型中返回 chatit(我已经评论过),并将加入更改为频道,我会看到 console.log 的结果,但是当我使用存在频道时,并且在 app.js 中使用加入,我只获得消息发送状态。 任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

在我的例子中,我的事件 MessagePosted 位于 Events 目录中的子目录 Chat 上,为了能够记录事件数据,您必须指向该子目录

app\Events\Chat\MessagePosted


window.Echo.join('chatit').listen('Chat\\MessagePosted', (e) => 
   console.log(e)
)


现在它正在 100% 工作

【讨论】:

【参考方案2】:

我不知道为什么,但经过几个小时的挫折后,我重新启动了我的电脑,它才开始工作。

我还发现终止并重新运行 php artisan serve 进程也可以解决问题

【讨论】:

赞成终止和重新运行 php artisan serve。我浪费了 1 个小时试图理解为什么我的应用程序不起作用。谢谢!

以上是关于回声连接不接收来自广播状态通道的数据的主要内容,如果未能解决你的问题,请参考以下文章

在没有接收器的情况下,是不是可以将数据打开的缓冲通道保留下来?

采集卡连接switch有回声

BLE低功耗蓝牙的广播内容

Spring Integration 的 XMPP 通道适配器

Laravel 回声回调

广播与P2P通道(下) -- 方案实现