Project

wave_box

0.01
No commit activity in last 3 years
No release in over 3 years
A simple push style messaging based on redis
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 0
 Project Readme

WaveBox

A redis-based messaging system

inspired by Tumblr Staircar

Features

  • Easy to use
  • Works well with redis presharding
  • Simple memory usage control
  • Tested in production environment

Example

require 'wave_box'

class User
  include ::WaveBox::GenerateWave
  include ::WaveBox::ReceiveWave

  can_generate_wave :name => "message",
                    :redis => :wave_redis_instance,
                    # waves with timestamp older than expire will be discarded
                    :expire => 60 * 60 * 24 * 7, # One week
                    # only store last 20 waves
                    :max_size => 20,
                    :id => :wave_box_id

  can_receive_wave :name => "message",
                   :redis => :wave_redis_instance,
                   :expire => 60 * 60 * 24 * 7, # One week
                   :max_size => 20,
                   :id => :wave_box_id

  def wave_redis_instance
    Redis.new # return a redis instance
  end

  def wave_box_id
    self.id
  end
end

sender = User.new
# => #<User:0x007f85631b9a50>
receiver = User.new
# => #<User:0x007f85631cf940>

# Send a wave from sender to receiver
sender.generate_message "hi", receiver

# Find all message waves in sender's outbox
sender.generated_message_after(0)
# => ["hi"]

# Find all message waves in receiver's inbox
receiver.received_message_after(0)
# => ["hi"]

Install

gem install wave_box

License

the MIT License.