Sha256: a226bec2a5dc3fcb772148929c062105f3d5cfcd342b28bc396933228c04a30c

Contents?: true

Size: 1.42 KB

Versions: 6

Compression:

Stored size: 1.42 KB

Contents

module Slinky
  # Code to interface with the LiveReload set of browser plugins and
  # javascript clients. Adapted from the guard-livereload project at
  # github.com/guard/guard-livereload.
  class LiveReload
    def initialize host, port
      @host = host
      @port = port
      @websockets = []
    end

    def run
      EventMachine.run do
        begin
          EventMachine.start_server(@host,
                                    @port,
                                    EventMachine::WebSocket::Connection, {}) do |ws|
            ws.onopen do
              begin
                ws.send "!!ver:1.6"
                @websockets << ws
              rescue
                $stderr.puts $!.to_s.foreground(:red)
              end
            end

            ws.onclose do
              @websockets.delete ws
            end
          end
          $stdout.puts "Started live-reload server on port #{@port}"
        rescue
          puts "Unable to start livereload server on port #{@port}".foreground(:red)
        end
      end
    end

    def reload_browser(paths = [])
      paths.each do |path|
        data = MultiJson.encode(['refresh', {
                                   :path           => "#{path}",
                                   :apply_js_live  => false,
                                   :apply_css_live => true
                                 }])
        @websockets.each { |ws| ws.send(data) }
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
slinky-0.8.3 lib/slinky/live_reload.rb
slinky-0.8.2 lib/slinky/live_reload.rb
slinky-0.8.1 lib/slinky/live_reload.rb
slinky-0.8.0 lib/slinky/live_reload.rb
slinky-0.7.3 lib/slinky/live_reload.rb
slinky-0.7.2 lib/slinky/live_reload.rb