无法接收通知 - 带有 Socket.io 的 Laravel

Posted

技术标签:

【中文标题】无法接收通知 - 带有 Socket.io 的 Laravel【英文标题】:Not able to receive notification - Laravel with Socket.io 【发布时间】:2018-01-13 19:15:47 【问题描述】:

我正在尝试构建一个聊天应用程序,为此,我正在使用 Laravel 的 Echo 和 Laravel echo 服务器。想法是监听消息通知。

我已经按照:

https://laravel.com/docs/master/notifications

https://laravel.com/docs/master/broadcasting

resources/assets/js/bootstrap.js:(当然我已经使用 NPM 编译了)

import Echo from 'laravel-echo'

window.Echo = new Echo(
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001'
);

laravel-echo-server.json:


    "authHost": "http://laravel-notifications.local",
    "authEndpoint": "/broadcasting/auth",
    "clients": [],
    "database": "redis",
    "databaseConfig": 
        "redis": ,
        "sqlite": 
            "databasePath": "/database/laravel-echo-server.sqlite"
        
    ,
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": ,
    "sslCertPath": "",
    "sslKeyPath": ""

ChatController.php(触发通知)

$toUser = User::find($toUser)->notify(new MessageNotification($message));

MessageNotification.php

public function toBroadcast($notifiable)

      return new BroadcastMessage([
        'message' => $notifiable,
        ]);

刀片视图(监听通知):

window.Echo.private('App.User.' + window.Laravel.user.id)
    .notification((notification) => 
        console.log(notification); // Not getting executing 
);

当我访问该页面时,我看到来自 Laravel Echo 服务器的以下日志:

[9:34:41 AM] - XnmH1wzMJM-5VON-AAAA 已通过身份验证:private-App.User.7

[9:34:41 AM] - XnmH1wzMJM-5VON-AAAA 加入频道:private-App.User.7

但是当我触发该通知时,我没有看到浏览器控制台上记录了任何内容。

完整的源代码:

https://github.com/xparthxvorax/Laravel-Notifications

注意:我可以成功收听事件,但不能收听通知。

【问题讨论】:

【参考方案1】:

在通知中,在广播频道部分,您需要指定将调度广播的队列。例如:

public function toBroadcast($notifiable)

    return (new BroadcastMessage([
        'html' => $data
    ]))->onConnection('database')->onQueue('alerts');

【讨论】:

以上是关于无法接收通知 - 带有 Socket.io 的 Laravel的主要内容,如果未能解决你的问题,请参考以下文章

无法接收另一个人的视频流,使用 socket.io 和 peer.js

无法从带有 Socket.IO 的 cookie 中获取 Express 会话 ID

如何使用 socket.io 实现长轮询?

如何实现 Laravel、node.js、socket.io 和 redis 以使用数据库创建实时聊天/通知

Socket.io 事件多次发出

如何在 node.js 中接收 socket.io 客户端事件?