我已经成功地在我的laravel应用程序上实现了推送器,但我想使,当用户成功地使订单的默认status_message为pending
,情况是当管理员将status_message更改为processed
时,已订购的用户会收到一个通知,说明他所做的订单已处理。
这是我的代码,但此代码会向所有用户发送通知。
- 主计长**
if ($data->status_message == 'processed') {
event(new OrderEvent('Hi, Your order is processed!'));
//...
}
- 我的活动订单活动. php**
public function broadcastOn()
{
return new Channel('notif-channel');
}
/**
* Broadcast order event.
*
* @return void
*/
public function broadcastAs()
{
return 'order-event';
}
- 在应用程序刀片中**
var channel = pusher.subscribe('notif-channel');
channel.bind('order-event', function(data) {
const obj = JSON.parse(JSON.stringify(data));
const message = obj.message;
blah blah blah
}
1条答案
按热度按时间lg40wkob1#
用户和管理员应该在同一个通道上。例如,如果用户订阅了通道"order-channel-SetUserID",管理员应该将消息发送到该通道,您应该在前端查找它,并在DOM上进行更改。
在控制器中,当您提交订单状态的更改时,运行带有通道名称的事件
现在,您的事件应类似于下图:
当然你可以改变你的类名称等...我只是给一个想法。
这是很重要的发送更改在同一频道与此用户,否则你会作出更改,以其他用户正在访问您的网站.
下面是您需要配置的其他内容。在app/Providers/EventServiceProvider.php中
您需要将事件放在protected $listen中
在app/Listeners中你应该创建OrderEventListener.php并按如下方式设置它:
}
检查你的调试控制台在pusher Jmeter 板?2如果你能看到事件触发那里所有你需要做的是显示消息与javascript。3如果没有事件正在运行,那么在你的代码中的东西丢失。