Skip to content
Branch: master
Go to file
Code

Latest commit

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

README.md

lrserver LiveReload server for Go

Golang package that implements a simple LiveReload server as described in the LiveReload protocol.

Using the recommended default port 35729:

File watching must be implemented by your own application, and reload/alert requests sent programmatically.

Multiple servers can be instantiated, and each can support multiple connections.

Full Documentation: GoDoc

Basic Usage

Get Package

go get github.com/jaschaephraim/lrserver

Import Package

import "github.com/jaschaephraim/lrserver"

Instantiate Server

lr := lrserver.New(lrserver.DefaultName, lrserver.DefaultPort)

Start Server

go func() {
    err := lr.ListenAndServe()
    if err != nil {
        // Handle error
    }
}()

Send Messages to the Browser

lr.Reload("file")
lr.Alert("message")

Example

import (
    "log"
    "net/http"

    "github.com/jaschaephraim/lrserver"
    "gopkg.in/fsnotify.v1"
)

// html includes the client JavaScript
const html = `<!doctype html>
<html>
<head>
  <title>Example</title>
</head>
<body>
  <script src="http://localhost:35729/livereload.js"></script>
</body>
</html>`

func Example() {
    // Create file watcher
    watcher, err := fsnotify.NewWatcher()
    if err != nil {
        log.Fatalln(err)
    }
    defer watcher.Close()

    // Add dir to watcher
    err = watcher.Add("/path/to/watched/dir")
    if err != nil {
        log.Fatalln(err)
    }

    // Create and start LiveReload server
    lr := lrserver.New(lrserver.DefaultName, lrserver.DefaultPort)
    go lr.ListenAndServe()

    // Start goroutine that requests reload upon watcher event
    go func() {
        for {
            select {
            case event := <-watcher.Events:
                lr.Reload(event.Name)
            case err := <-watcher.Errors:
                log.Println(err)
            }
        }
    }()

    // Start serving html
    http.HandleFunc("/", func(rw http.ResponseWriter, req *http.Request) {
        rw.Write([]byte(html))
    })
    http.ListenAndServe(":3000", nil)
}
You can’t perform that action at this time.