Skip to content

talentlessguy/golang-reload-browser

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Golang page reloader

I forked the repository to add go module and custom port.

This is a small sample application implemented in Golang which can programmatically refresh a tab in a browser. It is accompanying a blog post I've written about the subject with all the details: .

It hosts a small WebSocket service with a single reload endpoint, to which we can connect from the browser, and send a message every time we want it to be reloaded.

Install

go get -u -v github.com/talentlessguy/golang-reload-browser

Open a browser and press "Enter" in console.

Example

Go code:

package main

import (
	"bufio"
	"log"
	"os"
	rl "talentlessguy/golang-reload-browser"
)

func main() {
	log.Println("Starting reload server.")

	rl.StartReloadServer(":3000")

	log.Println("Reload server started.")
	log.Println("Press Enter to reload the browser!")
	for {
		reader := bufio.NewReader(os.Stdin)
		reader.ReadString('\n')

		log.Println("Reloading browser.")
		rl.SendReload()
	}
}

HTML page:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Reload test page</title>
    <script>
      const tryConnectToReload = address => {
        const conn = new WebSocket(address)

        conn.onclose = () => {
          setTimeout(() => {
            tryConnectToReload(address)
          }, 2000)
        }

        conn.onmessage = evt => location.reload()
      }
      try {
        if (window.WebSocket) {
          // The reload endpoint is hosted on a statically defined port.
          tryConnectToReload('ws://localhost:3000/reload')
        } else {
          console.log( 'Your browser does not support WebSockets :(')
        }
      } catch (e) {
        console.error(`Exception during connecting to Reload: ${e}`)
      }
    </script>
  </head>
</html>

Then run go file:

go run main.go

About

Browser reload with websockets in Go

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages

  • Go 100.0%