Class: Yarrow::Server::Livereload::Reactor

Inherits:
Object
  • Object
show all
Includes:
Loggable
Defined in:
lib/yarrow/server/livereload.rb

Instance Method Summary collapse

Methods included from Loggable

#logger

Constructor Details

#initializeReactor

Returns a new instance of Reactor.



11
12
13
14
# File 'lib/yarrow/server/livereload.rb', line 11

def initialize
  @sockets = []
  @running = false
end

Instance Method Details

#refresh_payload(path) ⇒ Object



33
34
35
36
37
38
39
# 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_loopObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# 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?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/yarrow/server/livereload.rb', line 16

def running?
  @running
end

#send_refreshObject



41
42
43
44
45
46
47
# 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

#startObject



20
21
22
23
24
25
# File 'lib/yarrow/server/livereload.rb', line 20

def start
  @thread = Thread.new do
    run_loop
  end
  @running = true
end

#stopObject



27
28
29
30
31
# File 'lib/yarrow/server/livereload.rb', line 27

def stop
  logger.info 'Shutting down Livereload'
  @thread.kill
  @running = false
end