无法接收在 Laravel 上广播的事件

问题描述

我已经苦苦挣扎了一段时间,但找不到让这项工作发挥作用的方法。 我的项目在 Laravel 8 上 我正在使用 Redis 和 laravel-echo-server(因为它似乎没有维护,所以我也尝试使用手工制作的 express/socket.io 服务器)

问题:当我触发事件时,Redis 和 Laravel Echo Server 会收到它,但从未在我网页的控制台上收到过。

“事件/发送消息”

<?PHP

namespace App\Events;

use Illuminate\broadcasting\Channel;
use Illuminate\broadcasting\InteractsWithSockets;
use Illuminate\broadcasting\PresenceChannel;
use Illuminate\broadcasting\PrivateChannel;
use Illuminate\Contracts\broadcasting\Shouldbroadcast;
use Illuminate\Foundation\Events\dispatchable;
use Illuminate\Queue\SerializesModels;

class SendMessage implements Shouldbroadcast
{
    use dispatchable,InteractsWithSockets,SerializesModels;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('user-channel');
    }

    public function broadcastAs()
    {
        return 'UserEvent';
    }

    public function broadcastWith()
    {
        return [
            'title' => 'This notification is awesome'
        ];
    }
}

".env"

broADCAST_DRIVER=redis
CACHE_DRIVER=file
FILESYstem_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REdis_HOST=127.0.0.1
REdis_PASSWORD=null
REdis_PORT=6379

LaraVEL_ECHO_PORT=6001

"welcome.blade.PHP"

<script>
        window.laravel_echo_port='{{env("LaraVEL_ECHO_PORT")}}';
    </script>
    <script src="https://cdn.socket.io/3.1.3/socket.io.min.js" integrity="sha384-cPwlPLvBTa3sKAgddT6krw0cJat7egBga3DJepJyrLl4Q9/5WLra3rrnMcyTyOnh" crossorigin="anonymous"></script>
    <script src="{{ ('/js/laravel-echo-setup.js') }}" type="text/javascript"></script>
      
    <script>
    window.Echo.channel('user-channel').listen('.SendMessage',(e) => {
        console.log('Got event...');
        console.log(e);
    });
    </script>

"laravel-echo-setup.js"

import Echo from 'laravel-echo';

window.io = require('socket.io-client');
   
window.Echo = new Echo({
    broadcaster: 'socket.io',host: window.location.hostname + ":6001"
});

希望有人能帮我

如果你需要更多代码,我在这里!!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...