2012-02-18 16 views
2

ユーザーが切断されたときに私のソーシャルネットワークのデータベースを更新するには、そのユーザーがサイトにいなくなってからスクリプトを更新することができませんサイト上の他のユーザーにイベントを送信するので、クライアントサイドのスクリプトに頼るのではなく、サーバー上でこれを行う方法がいくつか必要になると考えています。サーバー上のソケットIO jqueryイベント

今私は

socket.on('disconnect', function() { 
socket.broadcast.emit('disconnect', { data : session}); 
}); 

(まだユーザーによってロードされる)、スクリプトのサーバ側の一部にこのような何かをやっている。この後、再度ユーザ側のスクリプトでイベントをトリガし、それはAJAXイベントを実行してMYSQLデータベースを更新し、別のソケットイベントをトリガしてユーザーに通知し、このユーザーが切断されたことを通知しますが、これはユーザーがブラウザを閉じてもラップトップをシャットダウンしたり、それを処理するために他のユーザーに送信されることにも依存しています。これは起こり得ないものです。

これは私を非常に困惑させています。私は解決策を考え出す必要があります。

+0

私はあなたがソケットのタイムアウト/クローズイベントを聞く必要があると思いますが、解決策は見つかりませんでした。 – erenon

+0

さらに別の問題があります。サーバーをデプロイまたは再起動すると、そのようなイベントは発生しない可能性があります。あなたの現在のアプローチは非常に実現不可能です。 – usr

+0

私はこれをより良い方法でやり遂げることができますか? –

答えて

0

ajaxポーリングを使用して(サーバーが待機するajax reqeustsを継続的に送信し、10秒後にタイムアウトできるようにする)、ユーザーがまだオンラインであることを知らせます。サーバーが要求の受信を停止すると、ユーザーはログアウトしました。

関連する問題