2017-10-25 5 views
0

私が開発しているリアルタイムアプリに問題があります。私の問題はプッシャーを使ったユーザーの状態です。私は、ユーザーがページを離れるときを検出するか、しばらくの間非アクティブにしてステータスを「オフライン」に設定する正しい方法を得たいと考えています。どうすればそれを達成できますか?私はほとんどクライアント側でこの機能を開発することをお勧めしていないと確信しています、それはサーバー側にする必要がありますが、どのように?彼らがまだそこにいるかどうか私はクライアントに尋ねることができますか?コマンドを作成してcronを実行するべきですか?サーバにソケットの切断を「検出」させるメカニズムはありますか?どんな助けもありがとう、Thx!Laravel - Pusher - ユーザーがウェブサイトにいなくなったときやページを去るときを検出する

更新

NoseJSとSocketIOで、それはあなただけで記述する必要があり、本当に簡単です:

io.on('connection', function (socket) { // When client connects 
    socket.on('disconnect', function() { // Listen to disconnections from SERVER-SIDE 
     // Logic when a user disconnects. This is what I want! 
    }); 
}); 

しかしLaravelに、私はこれだけ持っている:

// A Laravel Event Class that implements the shouldBroadcast interface... 
    public function broadcastOn() 
    { 
     // I think here is where connections happen, but I don't know how to detect 'disconnections' :(
     return new PresenceChannel('someString'); 
    } 

PDを:私はLaravel EchoとPusherを使用しています:)

答えて

1

これを実現するにはpresence channelsを使用できます。ユーザーがチャンネルに入る、またはチャンネルから出るたびに、サーバーに通知するのにを使用できます。

+0

あなたの答えはThxです。私は現在プレゼンスチャネルを使用していますが、Laravelでイベントを聞く場所はわかりません。ユーザが切断したときにサーバに通知するためのjavascriptコードを書くことができますが、可能であればこのクライアントがそのリクエストを行うのに十分な時間がない可能性があります(ユーザはブラウザを突然閉じることができます)。 NodeJS + SockeIOで実装を表示するように質問を更新しましたが、基本的にサーバー側から 'disconnect'イベントを聴くことができます。私はLaravel <3を使用して同じものを望みます。 – Zalo

+0

[webhooks](https://pusher.com/docs/webhooks)を有効にしてLaravelサーバーに送信するように設定する必要があります。次に、それらを処理するためにLaravelルートとコントローラを設定する必要があります。あなたは特に 'member_removed'ウェブフックを探しています。 –

+0

本当にありがとうございました! – Zalo

関連する問題