class Yarrow::Server::Livereload::Reactor

Public Class Methods

new() click to toggle source
# File lib/yarrow/server/livereload.rb, line 11
def initialize
  @sockets = []
  @running = false
end

Public Instance Methods

refresh_payload(path) click to toggle source
# File lib/yarrow/server/livereload.rb, line 33
def refresh_payload(path)
  data = JSON.dump(['refresh', {
    :path           => path,
    :apply_js_live  => false,
    :apply_css_live => false
  }])
end
run_loop() click to toggle source
# File lib/yarrow/server/livereload.rb, line 49
def run_loop
  EventMachine.run do
    logger.info 'Starting Livereload reactor on port: 35729'

    EventMachine::WebSocket.start(:host => 'localhost', :port => 35729) do |socket|
      socket.onopen do
        socket.send "!!ver:1.6"
        @sockets << socket
        logger.info 'Livereload connected'
      end

      socket.onmessage do |message|
        logger.info "Receiving message: #{message}"
      end

      socket.onclose do
        @sockets.delete(socket)
        logger.info 'Livereload disconnected'
      end
    end
  end
end
running?() click to toggle source
# File lib/yarrow/server/livereload.rb, line 16
def running?
  @running
end
send_refresh() click to toggle source
# File lib/yarrow/server/livereload.rb, line 41
def send_refresh
  @updated_paths.each do |path|
    @sockets.each do |ws|
      ws.send(refresh_payload(path))
    end
  end
end
start() click to toggle source
# File lib/yarrow/server/livereload.rb, line 20
def start
  @thread = Thread.new do
    run_loop
  end
  @running = true
end
stop() click to toggle source
# File lib/yarrow/server/livereload.rb, line 27
def stop
  logger.info 'Shutting down Livereload'
  @thread.kill
  @running = false
end