Class: Yarrow::Server::Livereload::Reactor
- Inherits:
-
Object
- Object
- Yarrow::Server::Livereload::Reactor
- Includes:
- Loggable
- Defined in:
- lib/yarrow/server/livereload.rb
Instance Method Summary collapse
-
#initialize ⇒ Reactor
constructor
A new instance of Reactor.
- #refresh_payload(path) ⇒ Object
- #run_loop ⇒ Object
- #running? ⇒ Boolean
- #send_refresh ⇒ Object
- #start ⇒ Object
- #stop ⇒ Object
Methods included from Loggable
Constructor Details
#initialize ⇒ Reactor
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_loop ⇒ Object
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. do || logger.info "Receiving message: #{}" end socket.onclose do @sockets.delete(socket) logger.info 'Livereload disconnected' end end end end |
#running? ⇒ Boolean
16 17 18 |
# File 'lib/yarrow/server/livereload.rb', line 16 def running? @running end |
#send_refresh ⇒ Object
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 |
#start ⇒ Object
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 |
#stop ⇒ Object
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 |