Project

wave_box

0.0
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
2025
2026
 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.