GithubHelp home page GithubHelp logo

talentlessguy / golang-reload-browser Goto Github PK

View Code? Open in Web Editor NEW

This project forked from markvincze/golang-reload-browser

1.0 1.0 1.0 50 KB

Browser reload with websockets in Go

License: MIT License

Go 100.00%
browser-reload go golang

golang-reload-browser's Introduction

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

golang-reload-browser's People

Contributors

markvincze avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

ipmanlk

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.