如何让用户根据他们所在的组订阅 Pusher Channel?
How can I get a user to subscribe to a Pusher Channel based on the group they are in?
每个用户都放在一个组里,我的站点有5个组。我只想将 X 组中的事件广播给 X 组中的客户。如何创建这样的频道并让客户订阅它们?
Pusher.logToConsole = true;
var pusher = new Pusher('ec160cc0a1ca15e463f4', {
cluster: 'eu',
forceTLS: true
});
var channel = pusher.subscribe("{{Player::where('user_id', Auth::user()->id)->first()->group_id}}");
channel.bind('NewPurchase', function(data){
window.alert('successful!');
});
不过我在后台创建这些自定义组很好
public function broadcastOn()
{
return [Player::where('user_id', $this->product->seller_id)->first()->group_id];
}
我一直收到 'Class Player not found',也许是因为我那里的 php 似乎没有人阅读?
因为Player
是一个模型,通过全限定名实例化它
var channel = pusher.subscribe("{{\App\Player::where('user_id', Auth::user()->id)->first()->group_id}}");
public function broadcastOn()
{
return [App\Player::where('user_id', $this->product->seller_id)->first()->group_id];
}
"The broadcastOn method should return a channel or array of channels that the event should broadcast on. The channels should be instances of Channel, PrivateChannel, or PresenceChannel."
var channel = pusher.subscribe("{{Player::where('user_id', Auth::user()->id)->first()->group_id}}");
因此,如果您在使用 Class 时遇到问题,您可以将参数添加到事件中。它应该是这样的:
class YourEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $group_id;
public function __construct($group_id)
{
$this->group_id= $group_id;
}
public function broadcastOn()
{
return new Channel($this->group_id);
}
}
并调用事件:
event(new YourEvent(Player::where('user_id', Auth::user()->id)->first()->group_id));
每个用户都放在一个组里,我的站点有5个组。我只想将 X 组中的事件广播给 X 组中的客户。如何创建这样的频道并让客户订阅它们?
Pusher.logToConsole = true;
var pusher = new Pusher('ec160cc0a1ca15e463f4', {
cluster: 'eu',
forceTLS: true
});
var channel = pusher.subscribe("{{Player::where('user_id', Auth::user()->id)->first()->group_id}}");
channel.bind('NewPurchase', function(data){
window.alert('successful!');
});
不过我在后台创建这些自定义组很好
public function broadcastOn()
{
return [Player::where('user_id', $this->product->seller_id)->first()->group_id];
}
我一直收到 'Class Player not found',也许是因为我那里的 php 似乎没有人阅读?
因为Player
是一个模型,通过全限定名实例化它
var channel = pusher.subscribe("{{\App\Player::where('user_id', Auth::user()->id)->first()->group_id}}");
public function broadcastOn()
{
return [App\Player::where('user_id', $this->product->seller_id)->first()->group_id];
}
"The broadcastOn method should return a channel or array of channels that the event should broadcast on. The channels should be instances of Channel, PrivateChannel, or PresenceChannel."
var channel = pusher.subscribe("{{Player::where('user_id', Auth::user()->id)->first()->group_id}}");
因此,如果您在使用 Class 时遇到问题,您可以将参数添加到事件中。它应该是这样的:
class YourEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $group_id;
public function __construct($group_id)
{
$this->group_id= $group_id;
}
public function broadcastOn()
{
return new Channel($this->group_id);
}
}
并调用事件:
event(new YourEvent(Player::where('user_id', Auth::user()->id)->first()->group_id));