我正在尝试使用socket.io,redis和laravel-echo-server创建真实的通知。我的laravel-echo-server工作正常,我的web应用程序中的每个刷新页面的输出都是这样的:
[2023-06-25T04:15:30.117Z] - xvGR5sWQuYpxJw5JAAAR joined channel: change-channel
这意味着它连接。这些命令的控制台也在工作:
useEffect(() => {
window.Echo = new Echo({
client: socketio,
broadcaster: "socket.io",
host: "http://127.0.0.1:6001",
})
window.Echo.connector.socket.on("connect", function () {
console.log("connect success")
})
window.Echo.connector.socket.on("disconnect", function () {
console.log("disconnected")
})
但这一个
window.Echo.channel("change-channel").listen("change-event", (event) => {
console.log("ChangeEvent received:", event)
})
不起作用以下是我活动:
class ChangeEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*/
public function __construct()
{
//
}
/**
* Get the channels the event should broadcast on.
*
* @return array<int, \Illuminate\Broadcasting\Channel>
*/
public function broadcastOn(): array
{
return [
new Channel('change-channel'),
];
}
public function broadcastAs()
{
return 'change-event';
}
它在我的laravel-echo-server cli中捕获了事件,如下所示
Channel: laravel_database_change-channel
Event: change-event
我已经尝试改变名称一样的CLI的输出。并在事件前面加上点。名字,但它仍然不工作。我错过了什么吗?先谢谢你了!
1条答案
按热度按时间o2g1uqev1#
我需要把两种解决方案结合起来