lrserver

Go 的 LiveReload 服务器。(LiveReload server for Go [golang])

  • Owner: jaschaephraim/lrserver
  • Platform:
  • License:: MIT License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

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)
}

Main metrics

Overview
Name With Ownerjaschaephraim/lrserver
Primary LanguageJavaScript
Program languageGo (Language Count: 2)
Platform
License:MIT License
所有者活动
Created At2014-07-15 05:36:53
Pushed At2024-03-06 23:32:15
Last Commit At2024-03-06 15:26:39
Release Count13
Last Release Namev3.1.0 (Posted on )
First Release Name1.0.0 (Posted on 2014-07-20 17:32:59)
用户参与
Stargazers Count128
Watchers Count6
Fork Count13
Commits Count51
Has Issues Enabled
Issues Count4
Issue Open Count0
Pull Requests Count5
Pull Requests Open Count0
Pull Requests Close Count6
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private