12345678910111213141516171819202122232425262728293031323334353637 |
- module Sessions::Backend::RecentViewed
- def self.worker( user, worker )
- cache_key = 'user_' + user.id.to_s + '_recent_viewed'
- if Sessions::CacheIn.expired(cache_key)
- recent_viewed = RecentView.list_fulldata( user, 10 )
- recent_viewed_cache = Sessions::CacheIn.get( cache_key, { :re_expire => true } )
- worker.log 'notice', 'fetch recent_viewed - ' + cache_key
- if recent_viewed != recent_viewed_cache
- worker.log 'notify', 'fetch recent_viewed changed - ' + cache_key
- recent_viewed_full = RecentView.list_fulldata( user, 10 )
- Sessions::CacheIn.set( cache_key, recent_viewed, { :expires_in => 5.seconds } )
- Sessions::CacheIn.set( cache_key + '_push', recent_viewed_full )
- end
- end
- end
- def self.push( user, client )
- cache_key = 'user_' + user.id.to_s + '_recent_viewed'
- recent_viewed_time = Sessions::CacheIn.get_time( cache_key, { :ignore_expire => true } )
- if recent_viewed_time && client.last_change['recent_viewed'] != recent_viewed_time
- client.last_change['recent_viewed'] = recent_viewed_time
- recent_viewed = Sessions::CacheIn.get( cache_key, { :ignore_expire => true } )
- client.log 'notify', "push recent_viewed for user #{user.id}"
- # send update to browser
- r = Sessions::CacheIn.get( cache_key + '_push', { :ignore_expire => true } )
- client.send({
- :event => 'update_recent_viewed',
- :data => r,
- })
- end
- end
- end
|