require 'faye' class Extension attr_reader :collection def initialize(collection = []) @collection = collection end def outgoing(message, callback) if(message['channel'] == '/meta/subscribe') (message['ext'] ||= {}).tap do |ext| ext[:init] ||= {} ext[:init][:collection] = collection end end callback.call(message) end end servers = [] servers << Thread.new do Faye::RackAdapter.new({ :mount => '/faye', :extensions => [ Extension.new ] }).listen(12001) end servers << Thread.new do Faye::RackAdapter.new({ :mount => '/faye', :extensions => [ Extension.new([{abcd: 1}, {efgh: 23}]) ] }).listen(12002) end servers.each(&:join)