Sha256: f4c28eebf1d9f0ff817a4ced583374261cf5815940193babc631107690d832c3

Contents?: true

Size: 969 Bytes

Versions: 4

Compression:

Stored size: 969 Bytes

Contents

require 'bundler/setup'
require 'celluloid_pubsub'

# actor that subscribes to a channel
class Subscriber
  include Celluloid
  include Celluloid::Logger

  def initialize
    CelluloidPubsub::Client.connect(actor: Actor.current) do |ws|
      ws.subscribe('test_channel') # this will execute after the connection is opened
    end
  end

  def on_message(message)
    puts "got #{message.inspect}"
  end

  def on_close(code, reason)
    puts "websocket connection closed: #{code.inspect}, #{reason.inspect}"
    terminate
  end
end

# actor that publishes a message in a channel
class Publisher
  include Celluloid
  include Celluloid::Logger

  def initialize
    CelluloidPubsub::Client.connect(actor: Actor.current) do |ws|
      ws.publish('test_channel', 'data' => 'my_message') # the message needs to be a Hash
    end
  end
end

CelluloidPubsub::WebServer.supervise_as(:web_server)
Subscriber.supervise_as(:subscriber)
Publisher.supervise_as(:publisher)
sleep

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
celluloid_pubsub-0.0.9 examples/simple_test.rb
celluloid_pubsub-0.0.8 examples/simple_test.rb
celluloid_pubsub-0.0.7 examples/simple_test.rb
celluloid_pubsub-0.0.6 examples/simple_test.rb