laravel - 无法接收在 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
“欢迎.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"
});
希望可以有人帮帮我
如果您需要更多代码,我在这里!
解决方案
推荐阅读
- macos - Apple Silicon 的 FFmpeg 包
- python - AttributeError:代码在定义的 sorted() 之后不起作用
- ruby-on-rails - GitHub Actions 安装 pdftk
- javascript - lowdb 只更新 JSON 文件中的一个信息
- sql - 检查语句添加约束
- android - Android Mapxox - 更改功能 ID 的图标样式
- linux - Linux下ARM Cortex A上的内存区域如何表示为“设备”或“强排序”
- javascript - 如何使用 node-addon-api 从 char 向量创建新缓冲区?
- excel - 按顺序重新排列列的宏
- c# - 在事务中写入 Amazon S3 存储桶和 Amazon RDS