我正在使用Pusher制作聊天应用程序,在这个应用程序中,我想显示用户的活动,即谁在线。我订阅了一个私人频道,并通过默认情况向我的API发送身份验证POST
请求(/pusher/auth)
端点。我在我的Api / backend中使用Laravel。我已成功验证客户端的频道。我的响应状态代码为200
,在我的回复中,我收到了auth key
{"auth":"349a141376483e4b0639:9bcc630ec8c5981acbc49ee145dd76031348b533c16fce68ecff70d1a0243a09"}
。但我的问题是我怎样才能获得有关频道是否被占用或空出的信息。我试图得到它,但我得到了
Pusher:错误:{“type”:“WebSocketError”,“error”:{“type”:“PusherError”,“data”:{“code”:null,“message”:“Auth info需要订阅private-1“}}}
Js代码:
<script src="//js.pusher.com/3.2/pusher.min.js"></script>
<script>
var pusher = new Pusher("****************");//Using default endpoint
var user_id={{Auth::user()->id}};
var user_channel=pusher.subscribe( 'private-' + user_id);//user_id is 1.
</script>
Api代码:
public function pusherAuth(Request $request){
$channel=$request->input("channel_name");
$socketId = $request->input('socket_id');
$auth = $this->pusher->socket_auth($channel, $socketId);
$info=$this->pusher->get_channel_info($channel);
$channel_occupied = $info->occupied; //trying to get the Channel status.
return response()->json($channel_occupied);
}
我也试过Webhooks for pusher并设置一个Webhook url并将类型设置为Channel存在。我从文档中了解到, Pusher将在任何通道被占用时发送channel_occupied事件(即有至少有一个订阅者。。但是我怎么能抓住那个事件,它会像其他事件一样工作,比如Laravel内置事件吗?。喜欢这个例子 -
use App\Events\TalkEvent;
public function Eventdispatcher(){
event(new TalkEvent($somedata));
}